1
1
不,那是不可能的。在向线程中注入代码之前,线程必须处于空闲状态。例如,这是由control.begininvoke(Windows窗体)或dispatcher.begininvoke(WPF)完成的。这些UI库通常需要在UI线程上执行代码,因此它们对将调用封送到UI线程具有显式支持。 线程必须处于“空闲”状态。如果.NET支持某种异步注入方法,您将遇到可怕的可重入性问题。 |
2
1
如果您的组件将在Windows窗体上,那么下面是实现目标的一条路径: 在组件代码中:
在您的表格中,您可能有:
|
3
0
由于您可能不希望线程只删除它们当前正在执行的操作,因此您将需要某种类型的任务队列来让线程查看-这不必比队列更高级,因为它不是用于表示每个任务的某种类型。维护一个队列并在其中添加消息,这样线程就可以在完成当前所做的工作后处理它们。 如果队列为空,则使用信号量让工作线程等待新数据,如果向空队列添加新消息,则脉冲该信号量。这可以防止他们在不断地轮询队列时浪费CPU周期。 如果您想要几个工作线程,您所需要做的就是确保每个线程都有自己的队列,并且您将完全控制哪个线程运行什么。 编辑:在再次阅读问题时,我不确定您的问题是否是您真正需要线程来立即进行一些工作。如果是这样的话,我看不出这是可能的,因为你不能只在随机时间注入代码——你很可能会破坏当时正在执行的任何代码。 |
4
0
一个选项是将委托从主线程传递给子线程,这些子线程可以用作回调,以表示它们有消息。子线程可以通过回调传递消息,回调将消息保存在基于内存的集合或持久存储中,并且主线程在适当时检查这一点。 您可以更进一步,根本不让子线程向主线程发出信号,而是让子线程将消息写入数据库,并让主线程在方便时检查数据库。甚至可以使用数据库(通过事务)来处理并发性。这样做的好处是,系统崩溃时不会丢失消息。甚至可以让您在服务器上分布子线程(或主线程)。 |
Arman · django m2m\u已更改不工作 6 年前 |
Kev · Python中的信号频率滤波 6 年前 |
Giorgi Cercvadze · 如何将暂停的进程设置为后台? 6 年前 |
miXo · 如何使用整数除法降低采样率? 6 年前 |