c# - 异步实例化类

标签 c# initialization

所以我有一些 C# 代码实例化一个通过 COM 对象导出的类。该特定的实例化调用是阻塞调用(需要从外部源下载数据)。因此,使我的 C# 阻塞。

是否可以异步实例化对象?

最佳答案

这取决于。

一般来说,您可以启动一个Task来在后台线程上实例化该对象。对于 C# 5,这可以很简单:

var yourObject = await Task.Run(() => new TheObject());

但是,由于这是一个 COM 对象,因此该对象本身很可能具有线程关联性。如果 COM 对象需要单线程单元线程,则需要为其保证一个 STA 线程。如果它具有线程关联性,那么您可能需要在 UI 线程上执行此操作。

关于c# - 异步实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623535/

相关文章:

c++ - C++ 定义的复制构造函数的默认行为

java - 我可以将字符串作为参数添加到传统的 for 循环中吗?

C++ 2011 : good syntax to initialize an array in a constructor?

ios - 使用所需的 init(nscoder) 时从代码设置物理体

C# 格式化文本(右对齐)

c# - 使用 System.Drawing.Color 类型的可选参数

c# - 如何使用 Dapper 检查空值

c - 使用自身地址初始化对象

c# - 如何捕获鼠标移动事件

c# - 这个 'double +=' 线程安全吗?