Mor*_*goZ 7 .net c# asynchronous async-await
我不明白async/await的一些东西:
async方法必须在内部进行await调用...但是如果有等待它是因为它正在调用另一个异步方法,对吧?所以它似乎是一个无休止的异步方法链,等待内部调用另一个异步方法.
因此可以创建一个"第一"异步方法,而不是调用任何其他异步方法.只需创建一个异步方法,因为该方法可以完成许多可能会降低系统速度的工作.
方法不需要await async,反之亦然。您只能await在async方法中使用。您可能有一个返回 a 的方法,Task但没有将其标记为async。更多这里。
IIUC,是关于“所有异步的根源”。所以,是的,有可能创建一个“第一个”async方法。它只是一个返回Task( 或Task<T>) 的方法。
这些任务有两种类型:委托任务和承诺任务。
Task.Run(大多数情况下Task.StartNew是new Task(() => {});其他选项)触发,并且它有要运行的代码。这主要用于卸载工作。Task实际上并不执行任何代码,它只是a 的一种机制。完成后等待通知Task。b. 使用发出完成信号Task。这是通过TaskCompletionSource并且主要用于固有的异步操作(但也用于async同步对象)来完成的,例如: 。
private static Task DoAsync()
{
var tcs = new TaskCompletionSource<int>();
new Thread(() =>
{
Thread.Sleep(1000);
tcs.SetResult(5);
}).Start();
return tcs.Task;
}
Run Code Online (Sandbox Code Playgroud)
这些工具允许您创建这些“根”,但除非您自己实现一个I/O库(如.Net类DNS)或同步对象(如SemaphoreSlim),否则您很少会使用它们。
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |