草庐IT

event-dispatching

全部标签

C# 语言设计 : explicit interface implementation of an event

关于C#语言设计的小问题:))如果我有这样的界面:interfaceIFoo{intValue{get;set;}}可以使用C#3.0自动实现的属性显式实现此类接口(interface):sealedclassFoo:IFoo{intIFoo.Value{get;set;}}但是如果我在界面中有一个事件:interfaceIFoo{eventEventHandlerEvent;}并尝试使用类似字段的事件显式实现它:sealedclassFoo:IFoo{eventEventHandlerIFoo.Event;}我会得到以下编译器错误:错误CS0071:事件的显式接口(interface

c# - 在事件分派(dispatch)之前检查 null ...线程安全吗?

有些事情让我感到困惑,但从来没有造成任何问题......推荐的调度事件的方式如下:publiceventEventHandlerSomeEvent;...{....if(SomeEvent!=null)SomeEvent();}在多线程环境中,此代码如何保证另一个线程不会在检查null和调用事件之间更改SomeEvent的调用列表? 最佳答案 正如您所指出的,在多个线程可以同时访问SomeEvent的情况下,一个线程可以检查SomeEvent是否为null并确定它是否为null。就在这样做之后,另一个线程可以从SomeEvent中删

c# - 在数据库中表示 "Recurring Events"的最佳方式是什么?

我正在尝试使用C#开发一个依赖于调度程序和日历的事件应用程序,其中一个关键要求是在数据库中表示重复发生的事件。在数据库中表示重复事件的最佳方式是什么?更多详情:在创建事件时,我还会向某些用户发送邀请,并且应允许被邀请者仅在指定窗口(session持续时间)内登录session,或者当被邀请者尝试登录时可能会拒绝登录说,预定session开始前5分钟。 最佳答案 sysjobs,sysjobsschedule和sysschedulesSQLServer中的表在这方面做得很好。我不会重新发明轮子,我只会复制他们的设计。以下是syssch

c# - 不能将 lambda 表达式用作动态分派(dispatch)操作的参数,而不先将其转换为委托(delegate)或表达式树类型

我正在使用.NET4.5和VS2013,我有一个获取dynamic的查询来自数据库的结果。dynamictopAgents=this._dataContext.Sql("selectt.create_user_idas\"User\",sum(t.netamount)as\"Amount\"fromtransactiondetailtwheret.update_date>sysdate-7groupbyt.create_user_id").QueryMany();以下语句因编译错误而失败Cannotusealambdaexpressionasanargumenttoadynamical

c# - C# 中的双重分派(dispatch)?

我听过/读过这个词,但不太明白它的意思。我应该在什么时候使用这种技术以及如何使用它?谁能提供一个好的代码示例? 最佳答案 访问者模式是一种以面向对象的方式进行双重调度的方式。当您想根据运行时的类型而不是编译时的类型为给定参数选择使用哪种方法时,它很有用。双重dispatch是多重dispatch的特例。当您在一个对象上调用一个虚拟方法时,这被认为是单分派(dispatch),因为调用哪个实际方法取决于单个对象的类型。对于双重分派(dispatch),对象的类型和方法唯一参数的类型都会被考虑在内。这类似于方法重载决策,不同之处在于参数

c# - Dispatcher.BeginInvoke : Cannot convert lambda to System. 委托(delegate)

我正在尝试调用System.Windows.Threading.Dispatcher.BeginInvoke。该方法的签名是这样的:BeginInvoke(Delegatemethod,paramsobject[]args)我试图向它传递一个Lambda而不是必须创建一个委托(delegate)。_dispatcher.BeginInvoke((sender)=>{DoSomething();},newobject[]{this});它给我一个编译器错误,说我can'tconvertthelambdatoaSystem.Delegate.委托(delegate)的签名以一个对象为参数,

c# - WPF ListView : Attaching a double-click (on an item) event

我有以下ListView:我如何将事件附加到每个绑定(bind)的项目,双击该项目时将触发该事件? 最佳答案 从这里找到解决方案:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3d0eaa54-09a9-4c51-8677-8e90577e7bac/XAML:C#:protectedvoidHandleDoubleClick(objectsender,MouseButtonEventArgse){vartrack=((ListViewItem)sender).Con

c# - 如何摆脱 Visual Studio 中的 "[some event] never used"编译器警告?

例如,我收到此编译器警告,Theevent'Company.SomeControl.SearchClick'isneverused.但我知道它已被使用,因为将其注释掉会引发20个试图使用此事件的XAML页面的新警告!什么给了?是否有摆脱此警告的技巧? 最佳答案 这似乎是warning67因此可以被抑制:#pragmawarningdisable67不要忘记尽快(在事件声明之后)恢复它:#pragmawarningrestore67但是,我会再次检查并确保您在某处提出事件,而不是只是订阅。当您注释掉该事件时,编译器发出20个警告而不是

c# - 为什么我们在定义事件时需要 "event"关键字?

我不明白为什么我们在定义事件时需要“event”关键字,而我们可以在不使用“event”关键字的情况下做同样的事情,只需使用委托(delegate)。例如publicdelegatevoidCustomEventHandler(inta,stringb);publiceventCustomEventHandlercustomEvent;customEvent+=newCustomEventHandler(customEventHandler);customEvent(1,"a");//Raisingtheevent在这里,如果我从第二行中删除“事件”关键字,那么我也可以通过调用委托(d

c# - 这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection

这个问题在这里已经有了答案:HowdoIupdateanObservableCollectionviaaworkerthread?(7个答案)关闭2年前。我有一个DataGrid,它通过异步方法从ViewModel填充数据。我的DataGrid是:我正在使用http://www.amazedsaint.com/2010/10/asynchronous-delegate-command-for-your.html在我的View模型中实现异步方式。这是我的View模型代码:publicclassMainWindowViewModel:WorkspaceViewModel,INotifyCo