C# Winform实现Android监听器Listener模式

1 下载量 13 浏览量 更新于2024-09-01 收藏 53KB PDF 举报
"C#利用Winform模仿Android的监听器机制" 在C#的Windows Forms (Winform) 应用程序开发中,我们有时需要实现类似Android中的监听器功能,以便在特定事件发生时调用回调函数。Android的Listener机制是通过接口实现的,而C#也可以使用相同的概念来创建自定义的事件处理。以下是如何在C# Winform项目中实现这一功能的详细步骤。 首先,我们需要定义一个接口,这个接口会包含我们需要监听的方法。在本例中,我们创建了一个名为`ICallBackListener`的接口,它包含两个方法:`onCallBack()` 和 `onCallBack(string pWhat)`。`onCallBack()` 方法会在事件触发时被调用,而`onCallBack(string pWhat)` 方法则可能接收一个参数,允许传递额外的信息。 ```csharp public interface ICallBackListener { void onCallBack(); bool onCallBack(string pWhat); } ``` 接下来,我们创建一个`Controller`类,这个类将作为工作类,处理实际的业务逻辑。在这个类中,我们将存储一个监听器列表,用于保存所有注册了回调的实例。此外,我们还需要一些标志变量来控制线程的执行和工作状态。 ```csharp public class Controller { private Thread mThread; private bool mFlagWhile; private bool mFlagDoWork; private List<ICallBackListener> mListenerList; public Controller() { mListenerList = new List<ICallBackListener>(); mThread = new Thread(work); mFlagWhile = true; mFlagDoWork = true; } // 具体执行的工作 private void work() { while (mFlagWhile) { Thread.Sleep(3000); if (mFlagDoWork) { // 执行相应的处理 ActiveOnCallBack(); } } } // 在这里添加其他业务逻辑和事件触发代码 } ``` `Controller`类中的`work`方法模拟了一个循环,每隔3秒检查一次是否需要执行工作。当`mFlagDoWork`为真时,`ActiveOnCallBack`方法会被调用,这通常代表一个事件的发生。`ActiveOnCallBack`方法会遍历监听器列表,并对每个注册的监听器调用相应的方法。 为了使用这个监听器机制,我们可以在窗体或其他类中实现`ICallBackListener`接口,然后将实例添加到`Controller`的监听器列表中。这样,当`Controller`类触发事件时,实现了接口的类就会收到回调,从而能够执行相应的操作。 ```csharp public partial class MainForm : Form, ICallBackListener { private Controller controller; public MainForm() { InitializeComponent(); controller = new Controller(); controller.mListenerList.Add(this); } public void onCallBack() { // 在这里处理事件 } public bool onCallBack(string pWhat) { // 处理带参数的事件 return true; } } ``` 以上就是如何在C# Winform中模仿Android的监听器机制。这种方式允许我们在不同组件之间建立通信,实现事件驱动的编程模式,增强了代码的可扩展性和灵活性。