У меня есть следующая сценария:
Когда вводится команда (для теста это консольное приложение, когда оно готово, я надеюсь, что это будет 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
Я пытаюсь использовать async ctp: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d7ccfefa-123a-40e5-8ed5-8d2edd68acf4&displaylang=en – TDaver
Спасибо за ссылку. – soandos