2017-04-30 1 views
1

Windows에서 서비스로 작동하도록 winform 코드를 변환하는 방법은 무엇입니까? 내 코드C# - 내 winform 코드를 서비스 코드로 만드는 방법

private BackgroundWorker worker; 

    public Form1() 
    { 
     InitializeComponent(); 
     worker = new BackgroundWorker(); 
     worker.DoWork += worker_DoWork; 
     System.Timers.Timer timer = new System.Timers.Timer(5000); 
     timer.Elapsed += timer_Elapsed; 
     timer.Start(); 
    } 


    void timer_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     if (!worker.IsBusy) 
      worker.RunWorkerAsync(); 
    } 

    void worker_DoWork(object sender, DoWorkEventArgs e) 
    { 
     //Do some sql update query here 
    } 
+1

[Windows 서비스로 제공되는 .NET 콘솔 응용 프로그램] (http://stackoverflow.com/questions/7764088/net-console-application-as-windows-service) – user35443

+0

서비스와 관련하여 무엇을 할 생각이십니까? ? 서비스에서 BackgroundWorker가 필요하지 않으며 타이머를 사용하여 주기적으로 SQL을 실행하는 경우 최상의 솔루션은 타이머 빈도에 따라 다릅니다. [Windows 서비스에서 사용하기위한 최상의 타이머] (https://stackoverflow.com/questions/246697/best-timer-for-using-in-a-windows-service)를 참조하십시오. –

답변

0

서비스는 Windows에서 GUI를 사용하여 사용자와 상호 작용할 수 없습니다 아래

.

이 기사에서 인용하고있다 :MSDN - Interactive Services

중요한 서비스는 바로 윈도우 비스타로 사용자와 상호 작용할 수 없습니다. 따라서 대화 형 서비스 사용 절에서 언급 한 기술을 새 코드에서 사용해서는 안됩니다.

서비스로 실행하기위한 모든 코드가 포함 된 콘솔 응용 프로그램을 작성하고이를 서비스로 실행해야합니다.

그런 다음 사용자와의 상호 작용을 위해 별도의 WinForms 응용 프로그램이 있어야합니다.

두 응용 프로그램은 프로세스 간 통신 메커니즘 (아마도 파이프)을 사용하여 서로 상호 작용합니다.

+0

예, BackgroundWorker worker를 사용할 수 있습니까? 및 Windows 서비스로 System.Timers.Timer? –

+0

가능합니다. (당신이 물어 본 것과 당신이 의미하는 것이 아닌 것에 대해 유감스럽게 생각합니다.) –