gpt4 book ai didi

c# - 如何包装任何同步函数并使其在 C# 中异步

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:27 24 4
gpt4 key购买 nike

例如,我有一些想在另一个线程中运行的同步函数。我找到了这样关闭的方式。如果我不想创建任何新功能,有没有更高效、更漂亮的方法?我是在重新发明轮子还是没问题?

class Program
{
static void Main(string[] args)
{
((Action)(async () =>
{
await Task.Run(() => LongOperation());
Console.WriteLine("Then callback triggered");
}))();

Console.WriteLine("Main thread finished first.");

Console.ReadKey();
}

static void LongOperation()
{
Thread.Sleep(3000);
Console.WriteLine("Work completed");
}
}

如果我只想异步执行函数,我可以直接输入

Task.Run(() => LongOperation());

但是如果我想像在 JavaScript 中一样为回调添加一些代码行怎么办?

最佳答案

您正在此处创建 lambda 表达式:

Task.Run(() => LongOperation());

它可以包含多个语句:

Task.Run(() =>
{
LongOperation();
Console.WriteLine("Then callback triggered");
});

关于c# - 如何包装任何同步函数并使其在 C# 中异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49206823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com