.net 在单独的螺纹上加载部件?

.net 在单独的螺纹上加载部件?,.net,multithreading,.net,Multithreading,我有一个.net程序集(来自BMC remedy,如果有帮助的话),它在多线程设计方面似乎有缺陷。它似乎初始化了主(UI)线程上的所有对象,而不管实际构造它们的线程是什么,然后通常的跨线程问题接踵而至 有什么方法可以将程序集加载到单独的线程上吗?我在这里发布一个答案,因为我想我现在明白你的意思了: 方法在哪个线程上执行取决于方法的调用方,而不是创建其实例的线程 因此,为了防止UI线程释放,您必须在另一个线程上启动该操作。web上有很多关于这个主题的资源。也许我没有回答这个问题,但程序集不是加载在

我有一个.net程序集(来自BMC remedy,如果有帮助的话),它在多线程设计方面似乎有缺陷。它似乎初始化了主(UI)线程上的所有对象,而不管实际构造它们的线程是什么,然后通常的跨线程问题接踵而至


有什么方法可以将程序集加载到单独的线程上吗?

我在这里发布一个答案,因为我想我现在明白你的意思了:

方法在哪个线程上执行取决于方法的调用方,而不是创建其实例的线程


因此,为了防止UI线程释放,您必须在另一个线程上启动该操作。web上有很多关于这个主题的资源。

也许我没有回答这个问题,但程序集不是加载在线程上,而是加载在进程/应用域上。@Florian:我面临的问题是,每当我对相关程序集中的类的任何实例执行任何长时间运行的操作时,我的UI线程都会冻结。没有办法避免吗?我确实是在一个
backgroundworker
中启动了这些方法。我对其他程序集没有任何问题,只有这一个。也许我可以稍后加载它,而不是在项目开始时加载?正如我所说,在哪个线程或何时加载程序集都没有区别。也许您调用的方法会与UI线程同步?就是这样。谢谢事实证明,我正在调用的方法在某个地方使用了
Dispatcher.Invoke
。我基本上重写了代码,问题就解决了。加载到哪个线程上并不重要。如果在UI线程上加载大量程序集,则会出现故障。