2010-06-02 31 views
6

Làm cách nào để ứng dụng Biểu mẫu C# Windows đang chạy của tôi có thể nhận lệnh từ dòng lệnh trong khi nó đang chạy?Làm thế nào để chạy ứng dụng .NET của tôi có thể nhận lệnh khi đang chạy?

Ví dụ: nếu ứng dụng của tôi đang phát video thì tôi muốn có thể nhập trên dòng lệnh "MyApp/stop" để ứng dụng vẫn chạy, dừng phát video mà không thoát khỏi hiện tại phiên.

Trả lời

2

Bằng cách gửi lệnh như vậy, bạn sẽ kích hoạt một quá trình khác. Một số đối số dòng lệnh nhất định có thể thực hiện một số loại IPC để báo hiệu trường hợp "chính" của ứng dụng đang chạy.

4

Từ câu hỏi của bạn có vẻ như quá trình đầu tiên của bạn vẫn đang chạy và bạn bắt đầu một phiên bản thứ hai của nó và bạn muốn trường hợp đó giao tiếp với người đầu tiên.

Điều bạn đang tìm kiếm được gọi là inter-process communication (IPC). Cách tiêu chuẩn để làm điều này trong .NET là sử dụng Windows Communication Foundation (WCF).

+1

Đôi khi bạn có thể thấy IPC được gọi là đường ống có tên. Có một hướng dẫn khá tốt ở đây: http://omegacoder.com/?p=101 –

+0

Ống có tên là * một * dạng IPC. Có những người khác, một số trong đó có thể phù hợp hơn cho nhiệm vụ này. –

1

Nếu không có thay đổi cấu trúc thiết kế của bạn và giả sử ứng dụng của bạn là một ứng dụng độc lập (chạy trên một máy tính địa phương),

Một phương pháp là làm cho một thread của chờ đợi ứng dụng của bạn (WaitOne ()) cho một mutex có tên hoặc semaphore (link text).

Khi bạn khởi động ứng dụng (ví dụ thứ hai), bạn phân tích cú pháp dòng lệnh của bạn (thông qua đối số args). Nếu args [0] chứa lệnh "/ stop" của bạn, bạn "Release()" có tên mutex/semaphore. Sau đó, chủ đề của bạn (trong trường hợp đầu tiên) sẽ được đánh thức để dừng phát video.

Sau đó, một lần nữa (đã nói tất cả các bên trên), một giải pháp đơn giản hơn là có nút STOP trong ứng dụng của bạn, nơi người dùng có thể nhấp vào nó.

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