Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
.NET异步/await任务在没有等待的情况下运行_.net_Asynchronous - Fatal编程技术网

.NET异步/await任务在没有等待的情况下运行

.NET异步/await任务在没有等待的情况下运行,.net,asynchronous,.net,Asynchronous,有一行代码: var task = await TaskEx.Run(()=>{ Thread.Sleep(100000) }); 这是应该的 但如果我不等待就写: var task = TaskEx.Run(()=>{ Thread.Sleep(100000); //breakpoint }); 为什么我到达了断点?这不就是对任务的引用吗? 我使用的是.net 3.5 asyncbridge。我猜您可能有这样的误解:TaskEx.Run不仅创建了一个任务,而且

有一行代码:

var task = await TaskEx.Run(()=>{ Thread.Sleep(100000) });
这是应该的

但如果我不等待就写:

var task = TaskEx.Run(()=>{ 
    Thread.Sleep(100000);     //breakpoint
});
为什么我到达了断点?这不就是对任务的引用吗?
我使用的是.net 3.5 asyncbridge。

我猜您可能有这样的误解:
TaskEx.Run
不仅创建了一个任务,而且还启动了它<代码>等待不启动任务-它只是暂停方法,直到等待的任务完成。

我可以不运行创建任务吗?已尝试TaskCompletionSource,但没有帮助。Task Task=新任务(()=>Thread.Sleep(2000));//任务已创建。任务。运行将启动它。是的,您可以,但这是非常不寻常的,几乎没有任何用处。这也是危险的,因为大多数代码都假定任务已经开始或最终将完成。