1
22
当我有这样的东西时,我通常用
|
2
2
自己实施是唯一安全的选择。即使您找到了一种方法来查明线程是否正在休眠,但如果您试图终止线程,您仍然会有一个争用条件(因为它可能会在检查之后和终止线程之前开始处理)。 代替thread.sleep,你可以睡500毫秒,在30分钟前检查abort标志是否仍然是假的,再睡500毫秒等,然后再做这个工作,等等(这是一个实用的方法)。如果您想要更优雅的东西,可以使用带有超时的manualResetevent来等待主线程发出终止时间的信号。 |
3
2
哇,每个人都让事情变得如此复杂。使用计时器: 关于种族: 原来的岗位有一场比赛,已经被修正。据我所知,将服务置于停止状态不会中止用于服务计时器的线程池线程。定时器触发和服务同时停止的情况是无关的。actualWorkDoneHere()将运行或不运行。两者都是可接受的条件。
|
4
1
这是一种方法。将以下变量添加到类中:
然后在OnStart中,您可以这样做(我有一个helper方法,它在这个示例中进行一些日志记录,“run”方法完成实际工作):
执行线程工作的“run”方法如下(processInterval是两次运行之间等待的时间,可以在构造函数中设置它,也可以对其进行硬编码):
然后在OnStop中,您将执行以下操作:
|
5
1
您可以使用一个锁对象来防止线程在您的工作实际发生时被停止…
但是你应该小心-如果你的
|
6
0
尝试使用自动设置标志来处理服务的停止。在这种情况下,您不必执行线程中止。已在下面添加示例代码
干杯, 巴拉斯。 |
7
0
我的服务在网络套接字上监听,所以我所做的是创建一对连接的网络套接字,并使用SELECT系统调用来侦听这两个网络套接字。如果加入的一对报告准备好阅读,我就知道要关闭服务。 这个技巧可以用来触发任意数量的线程关闭,只要它们没有从连接的对中读取。 |
8
0
请在里面试试这个
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |