我有以下情形:
当命令被输入(用于测试,这是一个控制台应用程序,当它准备好了,我希望这将是一个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