【发布时间】:2020-10-09 19:44:02
【问题描述】:
假设你有一个方法如下:
public int slowMethod(string ss)
{
Console.WriteLine("slow method exec starts");
//Do some time taking work
Thread.Sleep(3000);
Console.WriteLine("slow method exec ends");
return 1;
}
你必须异步调用这个方法,但不能改变这个方法的签名,那你会怎么做呢?
【问题讨论】:
-
@MindSwipe 实际上在那个问题中
Foo方法很简单,它不接受或返回任何值。我正面临这个挑战,因此决定使用接受并返回值的方法发布一个新答案。 -
答案的核心概念是“不要这样做。从同步更改为异步将始终带来 API 更改”。此外,链接问题中的方法确实返回一个值,添加参数很简单
-
@MindSwipe 我只是在 C# 的控制台应用程序中玩弄异步代码,在一次采访中有人问我这个问题,所以我想在这里发布答案。
-
如果您需要在另一个线程中运行同步方法,请使用
Task.Run(() => SlowMethod("")),就这么简单。
标签: c# asynchronous async-await