Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行任务,做点什么然后等待?_C#_Async Await_Task - Fatal编程技术网

C# 运行任务,做点什么然后等待?

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 <

我熟悉基本的任务、asyn/WAIT等,但我没有做太多的高级工作,我在一个问题上有点卡住了。我有一种方法可以和摄像系统通信。摄像头代码使用
任务在其自己的线程上运行

    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";
   ...
}