Tag: 事件处理

在多租户Web应用程序中使用事件代理

我正在使用asp.net Mvc 5开发一个多租户n层Web应用程序。 在我的服务层中,我为每个重要操作定义自定义事件,并在执行这些操作后引发这些事件。 例如 Public event EventHandler EntityCreated; Public void Create(Entity item) { Save(item); …… EntityCreated(this, item); } 我打算将业务规则和通知连接到这些事件。 我想要使​​用事件的主要原因是在不修改服务层的情况下解耦了更多事件处理程序的逻辑和易插拔性。 问题:在asp.net中使用事件和代理是否有意义? 我在网上找到的大多数例子都是win form或wpf。 在multithreading应用程序方面,我获得了优势。 此外, 事件每个表单定义一次,并在表单的生命周期内处于活动状态。 但在我的情况下, 事件将是每个http请求 。 这是定义这些事件的开销吗?

C#:需要我的一个类来触发另一个类中的事件来更新文本框

总共n00b到C#和事件虽然我已经编程了一段时间。 我有一个包含文本框的类。 此类创建从串行端口接收帧的通信管理器类的实例。 我这一切都很好。 每次接收到一个帧并提取其数据时,我想要一个方法在我的类中使用文本框运行,以便将此帧数据附加到文本框。 所以,没有发布我的所有代码,我有我的表单类… public partial class Form1 : Form { CommManager comm; public Form1() { InitializeComponent(); comm = new CommManager(); } private void updateTextBox() { //get new values and update textbox } . . . 我有我的CommManager课程 class CommManager { //here we manage the comms, recieve the data and parse the frame } […]

Web客户端DownloadFileCompleted获取文件名

我试着像这样下载文件: WebClient _downloadClient = new WebClient(); _downloadClient.DownloadFileCompleted += DownloadFileCompleted; _downloadClient.DownloadFileAsync(current.url, _filename); // … 下载后我需要用下载文件启动另一个进程,我尝试使用DownloadFileCompleted事件。 void DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { if (e.Error != null) { throw e.Error; } if (!_downloadFileVersion.Any()) { complited = true; } DownloadFile(); } 但是,我无法从AsyncCompletedEventArgs知道下载文件的名称,我自己做了 public class DownloadCompliteEventArgs: EventArgs { private string _fileName; public string fileName { get { return _fileName; } […]

确定哪个文本框已触发文本更改事件

我有许多通过代码动态创建的文本框。 我希望能够为所有文本框分配一个通用事件处理程序,以便更改文本,然后在处理程序中确定哪个文本框已触发事件。 我的代码是: txtStringProperty.TextChanged += TextBoxValueChanged; private void TextBoxValueChanged(object sender, RoutedEventArgs e) { string propertyName = // I would like the name attribute of the textbox here } 如果您需要更多信息,请告诉我。

如何取消winforms中的任何事件?

我想从该函数范围内取消事件。 例如。 我按下了按钮点击事件,在错误validation时,我想取消此事件。 同样我也想取消其他活动。 我怎么能在C#中做到这一点

在动态事件处理程序中引用’this’

在我的’myClass’类中,我使用Reflection.Emit为myClass类的一个成员动态编写一个事件处理程序。 我成功完成了这个。 现在,我想修改事件处理程序以调用myClass类中的一个实例方法。 但是,我无法弄清楚如何使用Reflection.Emit将对’this’的引用推送到MSIL堆栈。 在事件处理程序中,Ldarg_0不是对“this”的引用,而是事件处理程序的第一个参数。 有没有人知道如何在堆栈上推送’this’的引用,以便我可以调用实例方法。 例如,这就是我希望c#代码看起来像: public class myClass { private myObj1 obj1; public myClass() { this.init(); } private void init() { obj1.myEvent += new myEvent_EventHandler(theHandler); } private void theHandler(myObj2 obj2, myObj3 obj3) { // this is the part I’m having trouble with this.myFunction(obj2); } private void myFunction(myObj2 obj2) { // irrelevant } } […]

Web浏览器中的C#到达点击按钮?

我想在webbrowser对象中单击事件按钮。 单击按钮我想伸出手写代码? 例如,在网站弹出窗口中的webbrowser对象上单击登录按钮以捕获事件并想编写代码? 我用谷歌翻译,对不起有什么不对:)

并行EventHandler

我希望毫不拖延地同时通知我class级的活动订阅者。 我应该滚动自己的事件处理程序; 使用FCL中的一些支持并行性; 或默认内置System.EventHandler支持这种事件通知方式?

将所有标准事件处理程序替换为WeakEventManager或其varian是否安全?

标准事件处理程序(带有运算符+ = )是内存泄漏原因之一(如果它没有未注册/处置(使用– =运算符))。 微软用WeakEventManager及其inheritance解决了它: PropertyChangedEventManager,CollectionChangedEventManager,CurrentChangedEventManager,ErrorsChangedEventManager等。 内存泄漏的简单示例代码是: public class EventCaller { public static event EventHandler MyEvent; public static void Call() { var handler = MyEvent; if (handler != null) { handler(null, EventArgs.Empty); Debug.WriteLine(“=============”); } } } public class A { string myText; public A(string text) { myText = text; EventCaller.MyEvent += OnCall; // Use code […]

在eventArgs中发送两个字符串的语法

在下面的代码中,我需要知道在引发事件时传递两个字符串的语法。 [PublishEvent(“Click”)] public event EventHandler<EventArgs> MyEvent; 谢谢撒克逊人。