Я знаком с основными задачами, asyn/await и т. Д., Но я не сделал много продвинутых вещей, и я немного застрял в проблеме. У меня есть метод, который связывает систему с камерой. Код камеры работает в своем потоке, используя Task
.Запустить задачу, что-то сделать, а потом подождать?
public Task<bool> DoCameraWork()
{
bool Result = true;
return Task.Run<bool>(() =>
{
for (int i = 0; i < 10; i++)
{
// Do something which will set Result to True or False
if (Result)
break;
else
Task.Delay(1000);
}
return Result;
});
}
То, что я хочу быть в состоянии сделать, это запустить задачу (DoCameraWork), обновление пользовательского интерфейса, вызвать другой метод, а затем ждать, пока задача закончить, прежде чем продолжить.
Каков наилучший способ достичь этого? Вот макет, который, я надеюсь, объясняет немного больше. Да, код плохой, но он просто объясняет, чего я хочу достичь.
// Running on UI Thread
public async void SomeMethod()
{
DoCameraWork(); // If I do await DoCameraWork() then rest of code won't process untill this has completed
TextBox.Text = "Waiting For camera work";
SendData(); // Calls a method to send data to device on RS232, notthing special in this method
// Now I want to wait for the DoCameraWork Task to finish
// Once camera work done, check result, update UI and continue with other stuff
// if result is true
// TextBox.Text = "Camera work finished OK";
// else if result is false
// TextBox.Text = "Camera work finished OK";
// Camera work finished, now do some more stuff
}
Для какой платформы Вы разрабатываете? –