2017-06-08 10 views
0

起動時に2つのGUIを開くC#アプリケーションがあります。 GUIの1つが3つの仮想COMポートを開きます。これらの仮想COMポートで送信されているデータを表示するために、同じアプリケーションの一部である別のGUIが必要です。私が開いているメイン/ファーストGUIでこのCOMポート宣言を共有することはありますか?C#.NET 4.5の2つのUIで共有されるシリアルポートを使用する必要があります。

+0

あなたがそれらを作成していないウィンドウの 'ctor'でそれらへの参照を渡すことができます。私は2つのウィンドウが同じUIスレッドを使用するかどうか覚えていませんが、共通のスレッドを共有していない場合は、それらのアクションを 'Invoke()'する必要があります。 –

+0

@PeteGarafano各プロセスには少なくとも.netのUIスレッドは1つしかありません – Gusman

+0

最初の文章は、2つのフォーム間でデータを共有する1つのWinFormアプリケーションがあることを意味しますか? [フォーム間でデータを渡す](https://stackoverflow.com/questions/3062575/)に問い合わせてください。 –

答えて

1

3つの方法:

1)ウィンドウ2のウィンドウ1からの接続のインスタンスをコピーします。

window2.Connection = this.Connection;

2)接続のpublic staticメンバー

class Window1 : Window 
{ 
    public static SerialConnectionClass Connection { get; set; } = new SerialConnectionClass(); 
} 

くださいあなたはそのような接続にアクセスすることができます

class Window2 :Window 
{ 
... 
    private void func() 
    { 
     Window1.Connection.Send(""); 
    } 
} 

3)静的作りをConnectionManager

static class ConnectionManager 
{ 
    public static SerialConnectionClass Connection { get; set; } = new SerialConnectionClass(); 
    public static EventHandler MessageReceived; 
    public static void Send(string text) 
    { 
     Connection.Send(text); 
    } 
    ... 
} 

次のようにウィンドウ1とウィンドウ2でそれを使用します。

class Window2 :Window 
{ 
... 
    private void func() 
    { 
     ConnectionManager.init("COM1"); 
     ConnectionManager.MessageReceived += this.MessageReceived; 
     ConnectionManager.Send("test123"); 
    } 
} 
関連する問題