我正在开发一个动态加载程序集的WPF应用程序。我们使用AppDomain.CurrentDomain.AssemblyResolve加载程序集。问题是这是一个静态事件委托,当它运行时,它在dispatcher线程上运行,从而阻止UI响应。有没有办法让这个事件在后台线程上工作?或者至少不会在UI工作时阻塞它?
发布于 2014-06-05 09:11:53
AppDomain.CurrentDomain.AssemblyResolve在您尝试解析该类型的同一线程上触发。我刚刚使用来自the MSDN docs的示例代码验证了这一点,只需进行以下最小的更改:
Task.Run(() => InstantiateMyTypeFail(currentDomain)).Wait();因此,在您的示例中,如果您可以选择在非UI线程上首次解析依赖项,则可以简单地执行以下操作:
await Task.Run(() => InstantiateMyTypeFail(currentDomain));这不会阻塞UI。
https://stackoverflow.com/questions/24049360
复制相似问题