|
|
1
16
你可以省去你的工作,用这个 Smart Thread Pool . 它提供了一个工作单元系统,允许您在任何时候查询每个线程的状态,并终止它们。
如果这太麻烦了,那么
当然,你可以更多的参与和复杂的事情。如果终止线程对时间不敏感(例如,如果在UI中不需要在3秒内终止线程),那么thread.Join()是更好的做法。 this good discussion and solution 对于“不要使用中止”的建议,这在SO上很常见。 |
|
|
2
4
如果你不想根据一个Id保存线程,你可以使用一个列表,然后枚举它来终止线程。
要中止,可以枚举字典并调用
|
|
|
3
3
Shutting down a multithreaded application 注意:我的问题不需要优雅地退出,但人们仍然建议我优雅地退出每个线程的循环。 要记住的主要一点是,如果希望避免线程阻止进程终止,则应将所有线程设置为后台:
启动和管理线程的首选方法是
值得一提的是,Thread.Abort()方法做了一些奇怪的事情:
|
|
|
4
2
创建线程后,可以设置它的Name属性。假设您将它存储在某个集合中,您可以通过LINQ方便地访问它,以便检索(并中止)它:
|
|
|
5
1
哇,有这么多答案。。
|
|
6
1
取决于你需要它有多复杂。您可以使用helper方法等实现自己类型的线程池。但是,我认为这很简单,只需维护一个列表/数组,并相应地向集合中添加/删除线程即可。 您还可以使用字典集合并使用自己的特定键类型来检索它们,即guid/字符串。 |
|
|
7
1
在启动每个线程时,将其ManagedThreadId作为键放入字典中,并将线程实例作为值。使用每个线程的回调返回其ManagedThreadId,当线程终止时,您可以使用它从字典中删除该线程。如果需要,还可以遍历字典以中止线程。使线程成为后台线程,以便在应用程序意外终止时终止。 您可以使用一个单独的回调来向线程发出继续或停止的信号,这反映了您的UI设置的一个标志,以便正常退出。您还应该在线程中捕获ThreadAbortException,以便在必须中止线程时可以执行任何清理。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 11 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 11 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 11 月前 |
|
|
Duck0 · 这个对象在更高的帧率下会更快吗,因为它在Update()中? 11 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 11 月前 |