C# C等待和处理任务

C# C等待和处理任务,c#,task,C#,Task,我一直在研究如何在C语言中使用任务,我想知道是否有人能为我澄清一些事情?在任务上调用wait是否违背了创建任务的目的,因为它不会冻结主线程,因为现在主线程必须等待任务完成。但是,我假设不会立即调用wait,所以现在您将何时调用它,或者如何知道何时处理任务。 假设我们有这样一个简单的例子: void MyFunction() { Task t = Task.Factory.StartNew(() => { System.Threading.Thread.Sle

我一直在研究如何在C语言中使用任务,我想知道是否有人能为我澄清一些事情?在任务上调用wait是否违背了创建任务的目的,因为它不会冻结主线程,因为现在主线程必须等待任务完成。但是,我假设不会立即调用wait,所以现在您将何时调用它,或者如何知道何时处理任务。 假设我们有这样一个简单的例子:

    void MyFunction()
    {
        Task t = Task.Factory.StartNew(() => { System.Threading.Thread.Sleep(5000); });
    }
如果你直接调用t.Wait,主线程仍将等待5秒才能执行任何其他操作,这有点违背了用户的目的,从用户的角度来看,他们将无法在5秒内执行任何操作。你怎么知道5秒后任务已经完成?你能把t处理掉吗?正确的处理方法是什么?很抱歉,如果问题真的很幼稚:
谢谢大家:D

您可能永远不会从UI线程调用Wait来处理这样的单个任务-正如您所说的,整个要点不是阻塞UI线程。事实上,等待来自UI线程的任何任务都是一个问题

但是,等待任务完成可能有助于同步多个任务并返回组合结果-例如,想象两个任务同时在priceline和expedia上执行酒店查询,以及产生这两个任务的线程,例如后台线程等待这两个任务的结果并组合结果以订购可用的服务这两个地点的酒店按价格计算


然后,查询的最终结果可以发送回UI线程,通常是通过执行回调或引发事件。

您可能永远不会从UI线程对这样的单个任务调用Wait—正如您所说,整个点并不是阻止UI线程。事实上,等待来自UI线程的任何任务都是一个问题

但是,等待任务完成可能有助于同步多个任务并返回组合结果-例如,想象两个任务同时在priceline和expedia上执行酒店查询,以及产生这两个任务的线程,例如后台线程等待这两个任务的结果并组合结果以订购可用的服务这两个地点的酒店按价格计算


然后,查询的最终结果可以发送回UI线程,通常是通过执行回调或引发事件。

Ahhh true:D谢谢:D因此也意味着C GC将处理任务并清理它。无需调用.Dispose。@Heinrich:如果在任务中不使用任何事件句柄,则无需担心调用Dispose,另请参见Ahhh true:D谢谢:D,这也意味着C GC将处理任务并清理它。无需调用.Dispose。@Heinrich:如果在任务中不使用任何事件句柄,则无需担心调用Dispose,另请参阅