C#服務中Process的應用!

來源:互聯網
上載者:User
之前,在網上查過許多資料!
發現在WinForm下能夠正常啟動並執行DLL,載入至Windows服務中後卻不能運行!

於是,我按照網上的方法開始了尋找解決方案之路.
1 使用進程
   廢除傳統的Timer,用不太熟悉的 System.Threading.Thread 來代替!
   關於進程的使用,並未太在意,儘管進程上有許多不合理的地方,我也沒有改動.
   為的就是希望可以通過進程來在Windows服務中使用Process.

   首先,定義全域變數:
   private Thread MainThread; 

   其次,在建構函式中執行個體化.
   // TODO: 在 InitComponent 調用後添加任何初始化  
   MainThread = new Thread(new ThreadStart(ThreadFunc));
   MainThread.Priority=ThreadPriority.Lowest;

   再次,定義進程方法
       public static void ThreadFunc()
        {
            //擷取程式初始時間
            DateTime lasttime = DateTime.Now;

//            System.Threading.Thread.Sleep(20000); 

            //迴圈開始
            while (true)
            {
                if (lasttime.AddMinutes(1) <= DateTime.Now)
                {
                    lasttime = DateTime.Now;
                    
    //TODO
                }
            }
        } 

  最後,在服務的 OnStart,和OnStop中,分別啟動和關閉進程.
  MainThread.Start(); 
  MainThread.Abort();

  以上的一切操作完成後,我就馬上開始測試我的程式.
  結果還是失敗了,我想看到的Process還是未啟動.

  過了一晚,第二天繼續開始思考這個問題,後面我看到網上成功的例子時,想到:
  是不是許可權的問題,是不是賬戶設定不對.
  想到這裡,我將Accout=LocalService更改為Accout=LocalSystem!

  運行程式!

  Process啟動成功!

   所以說,最重要的是賬戶問題!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.