次のようにして他の意見を探すより良い方法があるように感じます。値を返すタスクをラップする
本質的に、私はasync/awaitパターンを利用しようとしていますが、これを達成するためにTaskでTaskをラップする方法で何が起きたのかを示すためにメソッドからbool値を返す必要があります。私のスパイシーセンスは、実装に何か問題があると私に伝えています。
以下の例では、「LongRunningTask」は、タスクを返すライブラリメソッドであるため、何も変更できないため、制御できません。フローロジックの残りの部分を変更することができます。明らかに、これは私の実際の問題の架空の表現ですが、問題を示すためのものです。ハードコードされた "GetData"などに巻き込まれないようにしてください。
私は他のオプションを知っています。
void Main()
{
StartApplication();
}
private async void StartApplication()
{
// This is a just fictional example passing hard-coded GetData
var didExecuteLongRunningTask = await ProcessStuff("GetData");
if (didExecuteLongRunningTask)
{
Console.WriteLine("Long running task was executed");
}
else {
Console.WriteLine("Long running task was NOT executed");
}
}
// Define other methods and classes here
private async Task<bool> ProcessStuff(string command)
{
if (command == "GetData")
{
await LongRunningTask();
return await Task<bool>.Factory.StartNew(() => true);
}
else
{
return await Task<bool>.Factory.StartNew(() => false);
}
}
private Task LongRunningTask()
{
return Task.Delay(2000);
}
'async'はちょうど' trueを返します; 'や' falseを返す; ' –