c# - 异步 C#
问题描述
我对这两个关键字(Async 和 Await)都有疑问,他们的主要目标是按照我的理解同时完成多个方法,例如,如果我要执行一项长时间的任务,这将阻止在这种情况下,我必须使用(异步和等待)执行的主要任务。
但是当我在两个执行相同操作的不同程序中尝试它时,我发现执行与使用(异步和等待)相同
第一
class Async
{
public Async()
{
main();
}
public async void main()
{
Console.WriteLine("Main Thread....");
await SlowTask();
Console.WriteLine("Back To Main Thread");
}
public async Task SlowTask()
{
Console.WriteLine("Useless Thread....");
for (int i = 0; i < 1000000; i++)
{
// TODO
}
Console.WriteLine("Finished Useless Thread....");
}
}
第二个
class NoAsync
{
public NoAsync()
{
main();
}
public void main()
{
Console.WriteLine("Main Thread....");
SlowTask();
Console.WriteLine("Back To Main Thread");
}
public void SlowTask()
{
Console.WriteLine("Useless Thread....");
for (int i = 0; i < 1000000; i++)
{
// TODO
}
Console.WriteLine("Finished Useless Thread....");
}
}
两者的执行完全相同,据我了解,当使用(异步和等待)时,main 和 SlowTask 将同时执行而无需等待一个结束,因此另一个开始执行,但这不会发生。
我做错了什么或者我误解了 C# 中的异步?亲切的问候。
解决方案
执行应该完全相同,它们是逻辑一致的程序。鉴于您的整个程序只是增加一个计数器变量,因此可能甚至没有一个任务切换。
推荐阅读
- android - 在终端中执行 ./gradlew build 时 koltin 中的 Android 项目失败,但从菜单运行时可以工作
- python - 切片二维numpy数组
- performance - timescaledb 索引是否与 postgreSQL 一样工作?
- javascript - 当月日为 31 时,javascript 减去一个月返回当前月份的第一天
- python - Python SQLAlchemy 模拟
- c# - 在datagridview c#中的某些选定行之后更改单元格的值
- html - 双击后引导模式打开而不是在Angular 4中首次单击时打开
- algorithm - 平面度测试算法实现
- django - 在 Django 中的 UpdateView 和 CreateView 之间传递数据
- json - 在 Common Lisp 中访问嵌套的 JSON 字段