Я задаю похожий вопрос здесь Я использую этот образец для реализации namedpipes в win-форме, но теперь мне нужно запустить это в консольном приложении, чтобы возникла проблема в событиях дескриптора,в исходном коде некоторые события объявлены и запущены в некоторых потоках следующим образом:
public class PipeServer {
public delegate void MessageReceivedHandler(byte[] message)
public event MessageReceivedHandler MessageReceived;
void ListenForClients() {
//Some code
Thread readThread = new Thread(Read) { IsBackground = true };
}
void Read(object clientObj) {
//Some Code
if(MessageReceived != null)
MessageReceived(ms.ToArray());
}
}
Так что в форме win мы используем это так:
public partial class Form1 : Form {
private PipeServer pipeServer = new PipeServer();
public Form1(){
pipeServer.MessageReceived += pipeServer_MessageReceived;
}
void pipeServer_MessageReceived(byte[] message) {
Invoke(new PipeServer.MessageReceivedHandler(Do_pipeServer_MessageReceived),
new object[] { message });
}
public void Do_pipeServer_MessageReceived(byte[] message ) {
//Do Job
}
Поэтому, когда я использую консольное приложение, я могуне используете Invoke, кто-нибудь знает, какова реализация этого в консольных приложениях?