C#服务中Process的应用!
生活随笔
收集整理的這篇文章主要介紹了
C#服务中Process的应用!
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
之前,在網(wǎng)上查過(guò)許多資料!
發(fā)現(xiàn)在WinForm下能夠正常運(yùn)行的DLL,加載至Windows服務(wù)中后卻不能運(yùn)行!
于是,我按照網(wǎng)上的方法開(kāi)始了尋找解決方法之路.
1 使用進(jìn)程
?? 廢除傳統(tǒng)的Timer,用不太熟悉的?System.Threading.Thread?來(lái)代替!
?? 關(guān)于進(jìn)程的使用,并未太在意,盡管進(jìn)程上有許多不合理的地方,我也沒(méi)有改動(dòng).
?? 為的就是希望可以通過(guò)進(jìn)程來(lái)在Windows服務(wù)中使用Process.
?? 首先,定義全局變量:
???private Thread MainThread;?
?? 其次,在構(gòu)造函數(shù)中實(shí)例化.
???// TODO: 在 InitComponent 調(diào)用后添加任何初始化??
???MainThread = new Thread(new ThreadStart(ThreadFunc));
???MainThread.Priority=ThreadPriority.Lowest;
?? 再次,定義進(jìn)程方法
???????public?static?void?ThreadFunc()
????????{
????????????//獲取程序初始時(shí)間
????????????DateTime?lasttime?=?DateTime.Now;
//????????????System.Threading.Thread.Sleep(20000);?
????????????//循環(huán)開(kāi)始
????????????while?(true)
????????????{
????????????????if?(lasttime.AddMinutes(1)?<=?DateTime.Now)
????????????????{
????????????????????lasttime?=?DateTime.Now;
????????????????????
????//TODO
????????????????}
????????????}
????????}?
? 最后,在服務(wù)的 OnStart,和OnStop中,分別啟動(dòng)和關(guān)閉進(jìn)程.
? MainThread.Start();?
? MainThread.Abort();
? 以上的一切操作完成后,我就馬上開(kāi)始測(cè)試我的程序.
? 結(jié)果還是失敗了,我想看到的Process還是未啟動(dòng).
? 過(guò)了一晚,第二天繼續(xù)開(kāi)始思考這個(gè)問(wèn)題,后面我看到網(wǎng)上成功的例子時(shí),想到:
? 是不是權(quán)限的問(wèn)題,是不是賬戶設(shè)置不對(duì).
? 想到這里,我將Accout=LocalService更改為Accout=LocalSystem!
? 運(yùn)行程序!
? Process啟動(dòng)成功!
?? 所以說(shuō),最重要的是賬戶問(wèn)題!
發(fā)現(xiàn)在WinForm下能夠正常運(yùn)行的DLL,加載至Windows服務(wù)中后卻不能運(yùn)行!
于是,我按照網(wǎng)上的方法開(kāi)始了尋找解決方法之路.
1 使用進(jìn)程
?? 廢除傳統(tǒng)的Timer,用不太熟悉的?System.Threading.Thread?來(lái)代替!
?? 關(guān)于進(jìn)程的使用,并未太在意,盡管進(jìn)程上有許多不合理的地方,我也沒(méi)有改動(dòng).
?? 為的就是希望可以通過(guò)進(jìn)程來(lái)在Windows服務(wù)中使用Process.
?? 首先,定義全局變量:
???private Thread MainThread;?
?? 其次,在構(gòu)造函數(shù)中實(shí)例化.
???// TODO: 在 InitComponent 調(diào)用后添加任何初始化??
???MainThread = new Thread(new ThreadStart(ThreadFunc));
???MainThread.Priority=ThreadPriority.Lowest;
?? 再次,定義進(jìn)程方法
???????public?static?void?ThreadFunc()
????????{
????????????//獲取程序初始時(shí)間
????????????DateTime?lasttime?=?DateTime.Now;
//????????????System.Threading.Thread.Sleep(20000);?
????????????//循環(huán)開(kāi)始
????????????while?(true)
????????????{
????????????????if?(lasttime.AddMinutes(1)?<=?DateTime.Now)
????????????????{
????????????????????lasttime?=?DateTime.Now;
????????????????????
????//TODO
????????????????}
????????????}
????????}?
? 最后,在服務(wù)的 OnStart,和OnStop中,分別啟動(dòng)和關(guān)閉進(jìn)程.
? MainThread.Start();?
? MainThread.Abort();
? 以上的一切操作完成后,我就馬上開(kāi)始測(cè)試我的程序.
? 結(jié)果還是失敗了,我想看到的Process還是未啟動(dòng).
? 過(guò)了一晚,第二天繼續(xù)開(kāi)始思考這個(gè)問(wèn)題,后面我看到網(wǎng)上成功的例子時(shí),想到:
? 是不是權(quán)限的問(wèn)題,是不是賬戶設(shè)置不對(duì).
? 想到這里,我將Accout=LocalService更改為Accout=LocalSystem!
? 運(yùn)行程序!
? Process啟動(dòng)成功!
?? 所以說(shuō),最重要的是賬戶問(wèn)題!
總結(jié)
以上是生活随笔為你收集整理的C#服务中Process的应用!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 质量水平
- 下一篇: c# char unsigned_dll