次のシナリオがあります:
コマンドが入力されると (テスト用にはコンソール アプリケーションで、準備ができたら WebService になることを願っています)、いくつかのコードを実行し、さらにユーザー入力が必要になったらコマンドに戻ります。すぐに通訳。新しい入力が与えられたら、処理を中断したところから再開したい。これは c#5 の async-await パターンによく似ているので、試してみることにしました。私はこれについて考えていました:
public void CommandParser()
{
while(true)
{
string s = Console.ReadLine();
if (s == "do_something")
Execute();
else if (s == "give_parameters")
SetParameters();
//...
}
}
MySettings input;
public async void Execute()
{
//do stuff here
MyResult result = null
if (/*input needed*/){
input = new MySetting();
result = await input.Calculate();
}
else { /* fill result synchronously*/}
//do something with result here
}
public void SetParameters()
{
if (input!=null)
input.UseThis("something"); //now it can return from await
}
私の質問は、MySettings.Calculate と MySettings.UseThis の書き方です。最初からタスクを返す方法と、2番目から準備完了を通知する方法は? Task の多くのファクトリ メソッドを試しましたが、適切なメソッドが見つかりません。助けてください!