2010-02-03 44 views
5

Tôi đã viết một chương trình trong C# .NET, cần phải chạy ở chế độ nền. Tôi có nghĩa là nó nên có bất kỳ giao diện người dùng. Cả GUI lẫn CLI. Nó cũng không phải là windows service (vì nó chỉ được chạy sau khi người dùng đã đăng nhập).Làm thế nào để làm cho chương trình của tôi là một quá trình nền

Nó chỉ chạy ở chế độ nền. ví dụ về các chương trình như vậy là AdobeUpdater.exe, GoogleUpdater.exe v.v.

+3

Bạn nhận ra Google Software Updater thực sự chạy dưới dạng Dịch vụ Windows trong ngữ cảnh của tài khoản Hệ thống Cục bộ? Một dịch vụ Windows được thiết lập để tự động khởi động với Local System Credentials có lẽ là những gì bạn cần. – kd7

Trả lời

0

Sử dụng Trình lập lịch tác vụ để chạy theo lịch biểu (có thể dựa trên thời điểm người dùng đăng nhập). Hoặc thêm nó vào sổ đăng ký để chạy khi khởi động.

HKLM\Software\Microsoft\Windows\CurrentVersion\Run 
+0

Thankyou. Đây là một mẹo nhỏ hơn là câu trả lời cho truy vấn của tôi. Trong studio trực quan, chương trình của tôi là dự án 'Windows Forms/WPF' (GUI) hoặc dự án' CLI'. Bây giờ, tôi cũng không muốn. Nó sẽ âm thầm chạy trong nền. – ThinkCentre

5

Một lựa chọn khác là tạo ra một ứng dụng Windows và thiết lập hai thuộc tính sau đây:

 this.WindowState = FormWindowState.Minimized; 
     this.ShowInTaskbar = false; 
+0

Vâng, tôi không nghĩ rằng đây là một giải pháp tốt bởi vì, điều này làm cho hình thức đầu tiên được tạo ra và hiển thị sau đó những hành động này sẽ được thực hiện. Điều này làm cho GUI xuất hiện ít nhất trong một khoảnh khắc. Mà tôi muốn tránh. – ThinkCentre

+0

@ThinkCentre: Thử đặt thuộc tính hiển thị Biểu mẫu thành sai tại thời điểm thiết kế. Một ứng dụng với một biểu mẫu "ẩn" là lựa chọn duy nhất của bạn nếu bạn không muốn viết nó như là một dịch vụ cửa sổ, do đó, làm việc để có được điều này để làm việc cho bạn. –

+0

@BFree: +1 Nhân tiện :) –

5

Bạn có thể tạo một ứng dụng Console, và sau đó thay đổi đó là thuộc tính trong các thiết lập dự án để một ứng dụng Windows (thay vì giao diện điều khiển). Hoặc bạn có thể tạo ứng dụng Windows Forms mà không thực sự tạo bất kỳ biểu mẫu nào.

2

Tôi thường sử dụng giải pháp sau cho trường hợp này: tạo ngữ cảnh ứng dụng và sử dụng nó trong dự án của WinForm thay vì biểu mẫu.

  1. Tạo một lớp ApplicationContext

    public class MyApplicationContext : ApplicationContext 
    { 
         public MyApplicationContext() 
         { 
         } 
    
         void Exit(object sender, EventArgs e) 
         { 
           Application.Exit(); 
         } 
    } 
    
  2. Trong Program.cs -> thay thế ban đầu Application.Run() gọi

    static void Main() 
    { 
        Application.EnableVisualStyles(); 
        Application.SetCompatibleTextRenderingDefault(false); 
    
        Form1 frm = new Form1(); //remove if not needed 
        Application.Run(new MyApplicationContext()); 
    } 
    
  3. Bởi vì bạn không thể hiện dưới hình thức nữa , bạn cần cung cấp các cách khác để đóng ứng dụng. I E. sử dụng khay hệ thống và sau đó gọi:

    Application.Exit(); 
    

Lưu ý: Sử dụng ở trên (mà không bao giờ thể hiện dưới hình thức), bạn sẽ không bao giờ có được những sự kiện dưới hình thức thông thường như tải, đóng cửa, đóng cửa.

Các vấn đề liên quan