0
起動時に2つのGUIを開くC#アプリケーションがあります。 GUIの1つが3つの仮想COMポートを開きます。これらの仮想COMポートで送信されているデータを表示するために、同じアプリケーションの一部である別のGUIが必要です。私が開いているメイン/ファーストGUIでこのCOMポート宣言を共有することはありますか?C#.NET 4.5の2つのUIで共有されるシリアルポートを使用する必要があります。
起動時に2つのGUIを開くC#アプリケーションがあります。 GUIの1つが3つの仮想COMポートを開きます。これらの仮想COMポートで送信されているデータを表示するために、同じアプリケーションの一部である別のGUIが必要です。私が開いているメイン/ファーストGUIでこのCOMポート宣言を共有することはありますか?C#.NET 4.5の2つのUIで共有されるシリアルポートを使用する必要があります。
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");
}
}
あなたがそれらを作成していないウィンドウの 'ctor'でそれらへの参照を渡すことができます。私は2つのウィンドウが同じUIスレッドを使用するかどうか覚えていませんが、共通のスレッドを共有していない場合は、それらのアクションを 'Invoke()'する必要があります。 –
@PeteGarafano各プロセスには少なくとも.netのUIスレッドは1つしかありません – Gusman
最初の文章は、2つのフォーム間でデータを共有する1つのWinFormアプリケーションがあることを意味しますか? [フォーム間でデータを渡す](https://stackoverflow.com/questions/3062575/)に問い合わせてください。 –