是否可以在控制台C#应用程序中将操作从不同的线程分派到主线程?

时间:2016-09-02 16:08:22

标签: c# .net

这更像是一种知识产品。我只是想知道它是否可能。对两种情况都给出正当理由也会有所帮助。

因为有人认为他们需要更多的解释并坚持我的问​​题。所以这里为他们

基本上我想解决的问题是。我有一个控制台应用程序,它有一个API来调用本机代码(具有大量的全局状态),并且只有一个线程可以在给定时间内调用本机代码。

我的控制台应用程序启动多个线程进行大量计算,同时他们也希望在其中调用本机代码。

现在我有疑虑或可能是我缺乏理解(请原谅)

  1. 如果我对每个本地调用使用lock {}那么我只能停止一个线程进入核心那么好,但想象一下如果THREAD 1和THREAD 2等待锁定然后谁先获得锁定?它是先到先得,还是它的不确定性?
  2. 如果它是不确定的,那么我想从不同的线程调度我对Native API的所有调用,以便调度到运行线程的主控制台应用程序。

1 个答案:

答案 0 :(得分:2)

可能?确定的事情......只要你把东西定义为主线程...... 因为默认情况下没有消息循环你必须做出一些事情,或者获得对winforms Application类或WPFs调度程序的引用,然后触发其中一个......他们应该工作而不管没有winforms的事实或wpf ui如果你启动它们

如果您的应用程序中的代码需要在某个线程上执行某些操作...为什么不将内容分发到正确的线程?