草庐IT

c# - 阻塞和等待一个事件

它有时想在等待事件发生时阻塞我的线程。我通常这样做:privateAutoResetEvent_autoResetEvent=newAutoResetEvent(false);privatevoidOnEvent(objectsender,EventArgse){_autoResetEvent.Set();}//...button.Click+=OnEvent;try{_autoResetEvent.WaitOne();}finally{button.Click-=OnEvent;}但是,这似乎应该是我可以提取到通用类的东西(或者甚至可能是框架中已经存在的东西)。我希望能够做这样的事情

c# - 阻塞和等待一个事件

它有时想在等待事件发生时阻塞我的线程。我通常这样做:privateAutoResetEvent_autoResetEvent=newAutoResetEvent(false);privatevoidOnEvent(objectsender,EventArgse){_autoResetEvent.Set();}//...button.Click+=OnEvent;try{_autoResetEvent.WaitOne();}finally{button.Click-=OnEvent;}但是,这似乎应该是我可以提取到通用类的东西(或者甚至可能是框架中已经存在的东西)。我希望能够做这样的事情

c# - 如何计算有多少听众被吸引到一个事件?

假设我已经声明publiceventEventArgsMessageReceived;publicintSubscribedClients{get[...]}我想统计我类有多少“订阅客户”。我需要汇总那些通过我的API(未在片段中显示)通过网络订阅的那些加上那些执行channel.MessageReceived+=myMethod;的那些。我知道C#事件可以用add和remove语句显式声明,在那里我肯定可以将+或-1计数到本地计数器,但我从不在C#中为显式事件编写了代码,所以我不知道除了更新计数器之外还要在添加和删除上执行什么。谢谢。 最佳答案

c# - 如何计算有多少听众被吸引到一个事件?

假设我已经声明publiceventEventArgsMessageReceived;publicintSubscribedClients{get[...]}我想统计我类有多少“订阅客户”。我需要汇总那些通过我的API(未在片段中显示)通过网络订阅的那些加上那些执行channel.MessageReceived+=myMethod;的那些。我知道C#事件可以用add和remove语句显式声明,在那里我肯定可以将+或-1计数到本地计数器,但我从不在C#中为显式事件编写了代码,所以我不知道除了更新计数器之外还要在添加和删除上执行什么。谢谢。 最佳答案

c# - 使用 nunit 测试事件

我刚刚开始使用TDD,可以自行解决我遇到的大部分问题。但现在我迷路了:如何检查事件是否被触发?我一直在寻找类似Assert.Raise或Assert.Fire的东西,但什么也没有。Google不是很有用,大多数点击都是建议,例如foo.myEvent+=newEventHandler(bar);Assert.NotNull(foo.myEvent);但这证明不了什么。谢谢! 最佳答案 可以通过订阅该事件并设置一个bool值来检查事件是否被触发:varwasCalled=false;foo.NyEvent+=(o,e)=>wasCal

c# - 使用 nunit 测试事件

我刚刚开始使用TDD,可以自行解决我遇到的大部分问题。但现在我迷路了:如何检查事件是否被触发?我一直在寻找类似Assert.Raise或Assert.Fire的东西,但什么也没有。Google不是很有用,大多数点击都是建议,例如foo.myEvent+=newEventHandler(bar);Assert.NotNull(foo.myEvent);但这证明不了什么。谢谢! 最佳答案 可以通过订阅该事件并设置一个bool值来检查事件是否被触发:varwasCalled=false;foo.NyEvent+=(o,e)=>wasCal

c# - 从事件中返回一个值——这有什么好的做法吗?

我正在做一个使用异步TCP套接字的小型多线程应用程序,但我会直截了当:我正在使用自定义事件从表单中读取一个值,该事件使用的委托(delegate)返回一个完成时的字符串。我的问题是:这是正确的吗?可以从事件中返回值吗?还是有更好的方法来做到这一点?(比如使用一个简单的表单委托(delegate)来读取值) 最佳答案 从事件中返回值通常很尴尬。在实践中,我发现在传递给事件的一组自定义EventArgs上包含一个可写属性要容易得多,然后在事件触发后进行检查——类似于WinFormsFormClosing事件的Cancel属性。

c# - 从事件中返回一个值——这有什么好的做法吗?

我正在做一个使用异步TCP套接字的小型多线程应用程序,但我会直截了当:我正在使用自定义事件从表单中读取一个值,该事件使用的委托(delegate)返回一个完成时的字符串。我的问题是:这是正确的吗?可以从事件中返回值吗?还是有更好的方法来做到这一点?(比如使用一个简单的表单委托(delegate)来读取值) 最佳答案 从事件中返回值通常很尴尬。在实践中,我发现在传递给事件的一组自定义EventArgs上包含一个可写属性要容易得多,然后在事件触发后进行检查——类似于WinFormsFormClosing事件的Cancel属性。

c# - 如何处理添加到列表事件?

我有一个这样的列表:Listlist=newList如何处理向此列表添加新职位?当我这样做时:myObject.myList.Add(newControl());我想在我的对象中做这样的事情:myList.AddingEvent+=HandleAddingEvent然后在我的HandleAddingEvent中委托(delegate)处理向该列表添加位置。我应该如何处理添加新职位事件?我怎样才能使这个事件可用? 最佳答案 我相信您要找的东西已经是ObservableCollection(T)中API的一部分了。类(class)。示例

c# - 如何处理添加到列表事件?

我有一个这样的列表:Listlist=newList如何处理向此列表添加新职位?当我这样做时:myObject.myList.Add(newControl());我想在我的对象中做这样的事情:myList.AddingEvent+=HandleAddingEvent然后在我的HandleAddingEvent中委托(delegate)处理向该列表添加位置。我应该如何处理添加新职位事件?我怎样才能使这个事件可用? 最佳答案 我相信您要找的东西已经是ObservableCollection(T)中API的一部分了。类(class)。示例