关键词:
【中文标题】如何在windows服务中实现互斥锁【英文标题】:How to implement mutex in windows service 【发布时间】:2020-05-29 10:53:52 【问题描述】:您好,我是线程主题的新手,我需要在我的 Windows 服务中添加一个 Mutex,因为每当我运行它时,它会一遍又一遍地弹出 awesome.exe,如果它关闭了则打开一个梦幻般的.bat。
Fantastic.bat
@echo off
:1
"C:\awesome.exe"
goto :1
我做了一个 C# 项目来创建一个 windows 服务,我跟进了this guide,跟进它非常简单,瞧!我按预期得到了我的 Windows 服务,但是我认为互斥锁将是一个适当的方法,以避免让大量进程一遍又一遍地打开
MyService.cs
using System;
using System.ServiceProcess;
using System.Timers;
namespace Good_enough_service
public partial class GoodService : ServiceBase
private Timer _syncTimer = null;
public GoodService()
InitializeComponent();
protected override void OnStart(string[] args)
_syncTimer = new Timer();
this._syncTimer.Interval = 1000;
this._syncTimer.Elapsed +=
new System.Timers.
ElapsedEventHandler(this.syncTimerTicker);
_syncTimer.Enabled = true;
protected override void OnStop()
_syncTimer.Enabled = false;
private void syncTimerTicker(object sender, EventArgs e)
System.Diagnostics.Process.Start(@"C:\fantastic.bat");
我能够安装该服务,但它弹出很多次蝙蝠,因此它打开很多次我的 awesome.exe
我正在查看很多关于如何在我发现的 ***、微软文档和谷歌查询中使用互斥锁的示例,但是老实说,因为我对这个主题很陌生,所以我有点困惑如何要建立这个,有人可以帮助我如何实现这个吗?
Program.cs这是服务项目的一部分
using System.ServiceProcess;
namespace Good_enough_service
static class Program
static void Main()
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
new GoodService()
;
ServiceBase.Run(ServicesToRun);
【问题讨论】:
我不清楚你到底想做什么。看起来您的服务只是在计时器上运行批处理,并且该批处理一遍又一遍地运行 .exe?互斥锁是一种用于协调多个线程而不是多个进程的工具。 抱歉,我的回复延迟了,我正在寻找一种方法来运行我的服务,该服务将运行我的 Fantastic.bat 所以它会在我关闭时打开我的 awesome.exe。就这么简单,但是我面临的问题是我是这个主题的菜鸟,我只是遵循了关于如何创建 Windows 服务的指南,这是我在帖子中发布的代码,tbh 我没有了解要在代码中剪切哪些部分以避免一遍又一遍地打开 Fantastic.bat 我知道如果我将计时器增加到 1 小时,它将再次打开蝙蝠但进程会重复 X_X 【参考方案1】:鉴于您的目标只是启动 .exe
并确保它继续运行,您只需使用 Process
对象直接启动可执行文件,然后通过 HasExited
监视它的完成情况财产。当进程退出时,只需启动一个新的(或重新启动现有的)。
Process.HasExited Property
【讨论】:
看起来这就是我要找的东西,谢谢你的建议,我会带着更新的代码回来如何在android中实现跨进程锁?
】如何在android中实现跨进程锁?【英文标题】:Howtoimplementcrossprocesslockinandroid?【发布时间】:2014-05-2715:31:58【问题描述】:我正在编写一个库项目供多个APP使用。而且由于某种原因,我必须为不同的APP做一个功能互斥,所以我... 查看详情
oc中实现锁
熟悉多线程开发的同学对锁肯定不陌生,但是OC中如何实现锁呢?给大家科普一下。 首先构建一个测试用的类,假想它是我们的一个共享资源,method1与method2是互斥的,代码如下:@implementationTestObj-(void)method1{NSLog(@"%@",NSStrin... 查看详情
如何在无锁并发队列中实现“Front”方法?
】如何在无锁并发队列中实现“Front”方法?【英文标题】:Howtoimplement"Front"methodinalock-freeconcurrentqueue?【发布时间】:2019-11-2523:54:18【问题描述】:我正在尝试实现一个并发无锁队列。我正在密切关注这篇论文:https://www... 查看详情
如何在 C 中实现无锁共享标志?
】如何在C中实现无锁共享标志?【英文标题】:Howtoimplementalock-freesharedflaginC?【发布时间】:2012-10-0819:45:50【问题描述】:我有一个生产者一消费者模型,我需要生产者在数据可用时设置一个标志。我怀疑我可以在没有锁定共享... 查看详情
在 windows phone 中实现谷歌游戏服务
】在windowsphone中实现谷歌游戏服务【英文标题】:implementgooglegamesservicesinwindowsphone【发布时间】:2015-02-0816:14:38【问题描述】:我在Play商店上传了一款安卓游戏。我做了一个windows8和windowsphone8版本一样的。我需要实现在android版... 查看详情
如何在 Windows 10 UWP 中实现图表控件
】如何在Windows10UWP中实现图表控件【英文标题】:howtoimplementchartcontrolinWindows10UWP【发布时间】:2015-11-2701:55:15【问题描述】:我需要实现线性图。Windows10UWP有图表控件吗?有什么建议吗?谢谢【问题讨论】:我在大约6个月前研... 查看详情
如何在springcloud分布式系统中实现分布式锁?
最近在看分布式锁的资料,看了JosialL的《RedisinAction》的分布式锁的章节。实现思路是利用springcloud结合redis实现分布式锁。注意:这篇文章有问题,请看这一篇http://blog.csdn.net/forezp/article/details/70305336一般来说,对数据进行加锁... 查看详情
如何在 Windows Store 应用程序中实现家长控制?
】如何在WindowsStore应用程序中实现家长控制?【英文标题】:HowtoimplementparentalcontrolinWindowsStoreapplication?【发布时间】:2014-12-2522:30:20【问题描述】:我正在将教育游戏移植到Windows应用商店。游戏从网站下载关卡。我不认为他们... 查看详情
如何在springcloud分布式系统中实现分布式锁?
一、简介一般来说,对数据进行加锁时,程序先通过acquire获取锁来对数据进行排他访问,然后对数据进行一些列的操作,最后需要释放锁。Redis本身用watch命令进行了加锁,这个锁是乐观锁。使用watch命令对于频繁访问的键会引... 查看详情
在 Windows 窗体中实现 gameloop [关闭]
...这个游戏的常见问题,我很抱歉,但我不知道在哪里以及如何在我的游戏中实现游戏循环。我希望游戏循环能够像这样工作:Settings();if(startClicked==true)Spawn();while(enemyKill 查看详情
在没有互斥体的 C++11 中实现共享整数计数器的最简单方法:
】在没有互斥体的C++11中实现共享整数计数器的最简单方法:【英文标题】:EasiestwaytoimplementsharedintegercounterinC++11withoutmutexes:【发布时间】:2014-03-1702:30:48【问题描述】:假设我们有以下代码来计算某事发生的次数:inti=0;voidf()//... 查看详情
如何在iphone中实现Apple推送通知服务[重复]
】如何在iphone中实现Apple推送通知服务[重复]【英文标题】:HowtoimplementApplepushnotificationserviceiniphone[duplicate]【发布时间】:2011-11-0311:23:37【问题描述】:可能重复:HowcaniimplementPushNotificationiniphone如何在iphone中实现Apple推送通知服... 查看详情
如何使用 jabber net 在 c# Windows 应用程序中实现文件传输
】如何使用jabbernet在c#Windows应用程序中实现文件传输【英文标题】:HowtoimplementFiletransferinc#Windowsappusingjabbernet【发布时间】:2019-08-0611:08:04【问题描述】:我正在使用jabbernet和ejabberd开发一个聊天应用程序。我完成了与xmpp的一对... 查看详情
在 windows 中使用互斥锁进行进程间同步(win32 或 C++)
...个线程在App1.exe中运行,第二个进程在App2.exe中运行。我如何在Windows中同步这两个线程。有人可以分享一些示例或链接。【问 查看详情
如何在此服务器中实现 Websocket 握手?
】如何在此服务器中实现Websocket握手?【英文标题】:HowdoIimplementtheWebsocketHandshakeintothisserver?【发布时间】:2015-01-2110:34:54【问题描述】:我需要在我的Python服务器中实现Websocket握手。我的python服务器使用Twisted进行事件处理。... 查看详情
多线程编程--part5.1互斥锁之公平锁-释放锁
释放公平锁1.unlock()unlock()在ReentrantLock.java中实现的,源码如下:publicvoidunlock(){sync.release(1);}说明:unlock()是解锁函数,它是通过AQS的release()函数来实现的。在这里,“1”的含义和“获取锁的函数acquire(1)的含义”一样... 查看详情
如何在 WCF Web 服务中实现策略?
】如何在WCFWeb服务中实现策略?【英文标题】:HowtoimplementPolicyinWCFwebservice?【发布时间】:2016-08-0723:00:14【问题描述】:我想创建一个与给定Web服务相同的Web服务,仅取决于服务描述语言。我设法创建了完全相同的服务,除了这... 查看详情
我应该处置互斥锁吗?
...布时间】:2011-08-1812:01:07【问题描述】:我正在开发2个Windows服务,它们有一个公共数据库,我想用系统互斥锁锁定(跨进程)。现在我想知道在try-finally块中调用WaitOne()和ReleaseMutex()是否可以,或者我是否也应该处理互斥锁(例... 查看详情