DLL中WinForm上的事件处理按钮



我编写了一个C#实用程序类(DLL),它由windows应用程序调用。在windows应用程序中,我设置了一个backgrounderWorker,以避免耗时的代码占用windows应用程序。耗时的代码在实用程序类DLL中。现在,我在windows应用程序上设置了两个按钮,一个是"提交"按钮,在实用程序类中调用耗时的代码,另一个是一个"取消"按钮。

如果单击"取消"按钮,我希望停止backgroundWorker代码。问题是"取消"按钮在windows应用程序中,而代码在DLL中。那么,有没有一种方法可以让我将"取消"按钮的"onClick"事件处理程序附加到DLL,然后让DLL定期检查按钮是否被按下?

顺便说一句,在DLL代码启动之前,取消按钮一直有效。

我的想法是正确的还是有更好的方法?如有任何帮助,我们将不胜感激。

是的,可以注册到项目之间的事件。您所要做的就是在dll中引用winforms应用程序,并公开取消按钮。然后您可以在dll代码中注册它的任何事件然而,我不确定这是否是做你想做的事情的最佳方式。我认为更好的方法是在dll中有一个名为Cancel的方法,并让Cancel按钮单击事件调用此函数。这样一来,你的dll就不那么依赖于你的winforms应用程序了。

我实际上回去看了一些关于事件和事件处理的文档。我在DLL中做了以下操作:

  1. 创建了一个公共类,并添加了一个eventHandler、我自己的自定义eventArgs和一个子类(eventWatcher)来托管事件(调用它onCancel)
  2. 我注册了eventWatcher以侦听DLL中的OnCancel事件
  3. 我公开了eventWatcher,以便在客户端应用程序中使用它

在客户端应用程序中,我做了以下操作:

  1. 我修改了取消按钮以引发onCancel事件。这使我能够在DLL中分配一个方法来处理DLL中耗时代码的优雅退出

它现在如预期的那样工作!

最新更新