將您的SerialPort消耗轉移到單獨的靜態(或單例)類。在該類中創建一個DataReceived事件並在每次收到數據時觸發它。讓這兩個表單都訂閱DataReceived事件 - 這樣兩種表單都會收到數據。
編輯1:在樣品僞代碼
public static class Serial {
public static delegate void DataReceivedEventHandler(object sender, ReceivedEventArgs e);
public static event DataReceivedEventHandler DataReceived;
static SerialPort serialPort = new SerialPort();
static Serial() {
serialPort = new SerialPort();
serialPort.SerialDataReceived += Incoming;
serialPort.Open();
}
private static void Incoming(object sender, SerialDataReceivedEventHandler args) {
if (DataReceived != null) {
ReceivedEventArgs rea = new ReceivedEventArgs {Data = args.Data};
DataReceived(this, rea);
}
}
}
public class ReceivedEventArgs : EventArgs {
public string Data { get; set;}
}
public class Form1: Form {
public Form1() {
Serial.DataReceived += Incoming;
}
private void Incoming(object sender, ReceivedEventArgs e) {
// you receive the data here
Debug.WriteLine(e.Data);
}
}
public class Form2: Form {
public Form2() {
Serial.DataReceived += Incoming;
}
private void Incoming(object sender, ReceivedEventArgs e) {
// you receive the data here
Debug.WriteLine(e.Data);
}
}
再次,這是僞代碼,沒有編譯器附近。希望這可以幫助。
非常感謝,我終於解決了這個問題,導致我很多問題! – matjaz 2012-02-20 13:33:39