【发布时间】:2015-08-08 05:33:19
【问题描述】:
我正在尝试使用 C# 和 .net 4.5/4.6 编写异步操作,并尝试使用 Func.BeginInvoke()
这是 MSDN 的 BeginInvoke 页面所说的:
public virtual IAsyncResult BeginInvoke(
AsyncCallback callback,
Object object
)
不幸的是,没有关于第二个参数(对象)是什么的信息,主要的MSDN Async Tutorial Page 显示:
// Initiate the asychronous call.
IAsyncResult result = caller.BeginInvoke(3000,
out threadId, null, null);
这甚至不是受支持的函数定义!
看起来 .net 文档自我上次查看以来已经变得更糟了。
我们将不胜感激!
【问题讨论】:
-
您应该考虑在 .net 4.5 中使用
TPL和async/await功能进行异步调用。IAsyncResult使用和理解起来比较复杂,也比较陈旧。 -
谢谢您,您的建议比实际答案更好:)
-
啊,我需要让同步代码异步,所以我仍然需要“旧的slog”方式,但会使用async/await来调用它。
-
好吧,这对 UI 来说是合理的。你可以这样使用它:
var result = await Task.Run(() => comComponent.SomeAction()) -
Task.Run只是在.net 4.5.1 中为Task.Factory.StartNew添加的一个有用的快捷方式,具有足够的默认参数。
标签: c# .net asynchronous