1

カスタムデバイスと通信できるWinformsアプリケーションがあります。「切断」ボタンのあるメインウィンドウがあります。ログを処理するユーザー コントロールと、すべての通信を処理するクラス (SerialCom) があります。

ユーザー コントロールをロードするときに、SerialCom クラスで COM ポートもセットアップします。このクラスはデータを受信し、INotifyPropertyChanged を介してユーザー コントロールに送信します。詳細については、こちらの質問を参照してください。

SerialCom クラスにアクセスすることなく、MainForm からクラス SerialCom にアクセスしたいと考えていnewます。ただし、SerialCom クラスは最初にユーザー コントロールで作成されます。(そのため、newMainForm から SerialCom クラスを取得すると、シリアル ポートが開いていないため、閉じることができません。)

新しいクラス A に再度アクセスすることなく、クラス B および C からクラス A にアクセスする方法に関するヒントはありますか? フォーム間でイベントを渡すことを考えていましたが、これが最善の選択肢でしょうか?

4

2 に答える 2

1

SerialComクラスをシングルトンに変えます。そうすれば、多くのクラスがアクセスできるインスタンスができます。ただし、このスレッドを安全なものにしてください。

スレッド セーフなシングルトンの作成については、こちらを参照してください。

于 2012-11-20T09:03:04.787 に答える
1

シングルトンを探しているのかもしれません。基本的に、シングルは、単一のインスタンスのみを初期化できるオブジェクトであり、(静的メソッド/プロパティを介して) どこからでもこのインスタンスにアクセスするメカニズムを提供します。

これは、次のリンクで見つけた簡単な実装ですhttp://msdn.microsoft.com/en-us/library/ff650316.aspx

using System;

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}
于 2012-11-20T09:03:30.913 に答える