1

我有一个应该能够与自定义设备通信的 winforms 应用程序。我有一个主窗口,其中有一个“断开连接”按钮。我有一个处理日志记录的用户控件和一个处理所有通信的类(SerialCom)。

当我加载用户控件时,我还在 SerialCom 类中设置了 com 端口。此类接收数据,并通过 INotifyPropertyChanged 将其发送到用户控件,有关更多详细信息,请参见此问题

我想从 MainForm 访问 SerialCom 类,而不必访问newSerialCom 类。但首先在用户控件上创建 SerialCom 类。(所以,如果我new是 MainForm 中的 SerialCom 类,串口将不会打开,所以我无法关闭它。)

关于如何从 B 类和 C 类进入 A 类而无需再次进入新 A 类的任何提示?我正在考虑在表单之间传递事件,这是最好的选择吗?

4

2 回答 2

1

将您的SerialCom班级变成单身人士。这样你就有了一个许多类都可以访问的实例。但请确保此线程安全!

看到这个制作线程安全的单例

于 2012-11-20T09:03:04.787 回答
1

也许您正在寻找单身人士。基本上,single 是一个只允许初始化单个实例的对象,并提供一种机制(通过静态方法/属性)从任何地方访问该实例。

这是我在以下链接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 回答