我有以下情形:
當命令被輸入(用於測試,這是一個控制檯應用程序,當它準備好了,我希望這將是一個WebService)我執行一些代碼,並且需要進一步的用戶輸入的時候,我立即返回到命令解釋器。當新的輸入被給出時,我想要處理從我離開它的地方恢復。這聽起來很像C#5異步等待模式,我決定嘗試一下。 我在想這個問題:如何編寫C#5異步?
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?如何從第一個任務返回Task,以及如何從第二個任務中發出準備好信號?我已經嘗試了許多工廠方法的任務,但我找不到合適的!請幫忙!
它與您的問題沒有直接關係,但您如何擁有c#5? – soandos 2011-05-26 21:35:45
我想要使用異步CTP:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d7ccfefa-123a-40e5-8ed5-8d2edd68acf4&displaylang=en – TDaver 2011-05-26 21:43:10
謝謝你的鏈接。 – soandos 2011-05-26 21:48:59