C# 运行任务,做点什么然后等待?
我熟悉基本的任务、asyn/WAIT等,但我没有做太多的高级工作,我在一个问题上有点卡住了。我有一种方法可以和摄像系统通信。摄像头代码使用C# 运行任务,做点什么然后等待?,c#,async-await,task,C#,Async Await,Task,我熟悉基本的任务、asyn/WAIT等,但我没有做太多的高级工作,我在一个问题上有点卡住了。我有一种方法可以和摄像系统通信。摄像头代码使用任务在其自己的线程上运行 public Task<bool> DoCameraWork() { bool Result = true; return Task.Run<bool>(() => { for (int i = 0; i <
任务在其自己的线程上运行
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;
});
}
听起来您只是想稍后在方法中等待:
public async void SomeMethod()
{
var cameraTask = DoCameraWork();
TextBox.Text = "Waiting For camera work";
SendData();
var result = await cameraTask;
TextBox.Text = result ? "Camera work finished OK"
: "Eek, something is broken";
...
}
是的,我确实有点想等一会儿,但我希望任务在之前开始。因此,任务必须在“SendData()”之前启动,但如果可以的话,我会在“SendData()”之后等待。@Gaz83就是这样做的。@Servy哦,所以var cameraTask=DoCameraWork()触发任务启动,然后var result=wait cameraTask;检查任务的结果,如果任务没有完成,那么它会在那里等待?@JonSkeet谢谢,这正是我想要的。每天学习新东西:-)你在为什么平台开发?
public async void SomeMethod()
{
var cameraTask = DoCameraWork();
TextBox.Text = "Waiting For camera work";
SendData();
var result = await cameraTask;
TextBox.Text = result ? "Camera work finished OK"
: "Eek, something is broken";
...
}