栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Windows Service持续运行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windows Service持续运行

onStart()
回调需要及时归还,所以你要揭开序幕,所有的工作都将执行一个线程。我建议向您的班级添加以下字段:

using System.Threading;private ManualResetEvent _shutdownEvent = new ManualResetEvent(false);private Thread _thread;

_thread
字段将包含对
System.Threading.Thread
您在
onStart()
回调中创建的对象的引用。该
_shutdownEvent
字段包含系统级事件构造,该构造将用于向线程发出信号,以在服务关闭时停止运行。

onStart()
回调中,创建并启动线程。

protected override void onStart(string[] args){     _thread = new Thread(WorkerThreadFunc);     _thread.Name = "My Worker Thread";     _thread.IsBackground = true;     _thread.Start();}

您需要一个命名函数

WorkerThreadFunc
才能使其正常工作。它必须匹配
System.Threading.ThreadStart
委托人签名。

private void WorkerThreadFunc(){}

如果您在此函数中未添加任何内容,线程将启动,然后立即关闭,因此您必须在其中放置一些逻辑,这些逻辑基本上可以在工作时使线程保持活动状态。这是

_shutdownEvent
派上用场的地方。

private void WorkerThreadFunc(){    while (!_shutdownEvent.WaitOne(0)) {        // Replace the Sleep() call with the work you need to do        Thread.Sleep(1000);    }}

while循环检查,

ManualResetEvent
以查看是否已“设置”。由于我们使用初始化了对象
false
,因此此检查返回false。在循环内部,我们睡眠1秒钟。您需要将其替换为所需的工作-
监视代理设置等。

最后,在

onStop()
Windows服务的回调中,您要向线程发出停止运行的信号。使用,这很容易
_shutdownEvent

protected override void onStop(){     _shutdownEvent.Set();     if (!_thread.Join(3000)) { // give the thread 3 seconds to stop         _thread.Abort();     }}

希望这可以帮助。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号