草庐IT

发布订阅

全部标签

c# - 一个事件监听器是否可以被限制为只有一个订阅者?

是否可以阻止多个订阅者订阅一个事件?我创建了一个快速示例片段来为我的问题提供一些背景信息,但遗憾的是我现在无法对其进行测试,因为我不在我的VS机器旁。目标是:如果没有订阅者则返回一个空列表。返回单个订阅者的返回值。如果有多个订阅者尝试订阅该事件,则抛出异常(这是问题的关键)。这可能吗?publicdelegateListGetWindowListDelegate();publicstaticeventGetWindowListDelegateGetWindowListEvent;publicListGetWindowList(){if(GetWindowListEvent==null)

c# - ASP.Net Web API 自定义模型与 x-www-form-urlencoded 发布数据绑定(bind) - 似乎没有任何效果

在发布x-www-form-urlencoded数据时,我很难让自定义模型绑定(bind)正常工作。我已经尝试了所有我能想到的方法,但似乎没有任何方法产生预期的结果。请注意,在发布JSON数据时,我的JsonConverters等都可以正常工作。当我作为x-www-form-urlencoded发布时,系统似乎无法弄清楚如何绑定(bind)我的模型。我的测试用例是我想绑定(bind)一个TimeZoneInfo对象作为我模型的一部分。这是我的模型Binder:publicclassTimeZoneModelBinder:SystemizerModelBinder{protectedov

C# 在发布版本中不起作用

尝试在C#应用程序上调试问题时,我偶然发现了这个问题,它是导致应用程序出现故障的原因。基本上我有这段代码:doublescale=1;doublestartScale=1;...scale=(e.Scale-1)*startScale;if(scale发生的情况是,即使scale大于1,如果scale最终始终为1,执行也会进入内部。这只发生在发布版本中。有人知道发生了什么事吗?编辑这是XamarinForms自定义控件的几乎(只缺少什么都不做的ctor,取自他们的示例以实现捏合手势(here)。publicclassPinchView:ContentView{privatedouble

c# - 响应式扩展订阅调用等待

我想针对响应式扩展Observable引发的每个事件执行异步调用。我还试图使所有内容保持同步,因为我希望在处理下一个事件之前完成异步调用。如何做类似于以下的事情?我说类似是因为下面的代码无法编译。settingsChangedInMemory.Subscribe(async_=>{varsettings=Extract();awaitSaveSettings(settings);});我不确定它是否改变了什么,但我需要订阅多个Observable。例如另一个像这样的订阅。settingsChangedOnDisk.Subscribe(async_=>{varsettings=await

c# - 什么时候应该覆盖 OnEvent 而不是在继承时订阅事件

什么时候应该做以下事情?classFoo:Control{protectedoverridevoidOnClick(EventArgse){//newcodehere}}与此相反?classFoo:Control{publicFoo(){this.Click+=newEventHandler(Clicked);}privatevoidClicked(objectsender,EventArgse){//code}} 最佳答案 覆盖而不是附加委托(delegate)将产生更高效的代码,因此通常建议您始终尽可能这样做。有关详细信息,请参

c# - 如何将消息发布到运行消息泵的 STA 线程?

所以,关注this,我决定在专用STA线程上显式实例化一个COM对象。实验表明COM对象需要一个消息泵,这是我通过调用Application.Run()创建的:privateMyComObj_myComObj;//CalledfromMain():ThreadmyStaThread=newThread(()=>{_myComObj=newMyComObj();_myComObj.SomethingHappenedEvent+=OnSomthingHappened;Application.Run();});myStaThread.SetApartmentState(ApartmentSt

c# - 如何获取 WPF 应用程序的发布版本

我想要我的WPF应用程序发布版本。我尝试使用this的答案题。它有效,但问题是我们可以手动更改那里的值。我想知道我的项目实际发布了多少次(不需要版本号。我的应用程序发布了多少次)。这可以做到吗? 最佳答案 使用ClickOnce,每次发布时,VisualStudio都会自动更改编号。每次发布时它都会增加该值。你的问题是你手动更改了号码。解决方案是发布并让VisualStudio更新值...您应该注意到,一旦发布,您的项目就需要保存。这是因为VisualStudio刚刚为您增加了值。更新>>>如果您想从代码访问已发布的版本(您应该在您

c# - 使用 .net 标准以编程方式创建服务总线订阅

我的场景:托管在云端的网站,其中每个实例都为自己创建一个服务总线主题订阅以监听消息。我的问题:如何以编程方式创建订阅? 最佳答案 Microsoft.Azure.ServiceBus.3.1.0允许使用ConnectionString创建ManagementClient。privateasyncTaskCreateTopicSubscriptions(){varclient=newManagementClient(ServiceBusConnectionString);for(inti=0;i

c# - web.config 转换未应用于发布或构建安装包

今天我开始使用VS2010中的web.config转换。首先,我尝试了很多关于这个主题的博客文章中的相同的helloworld示例-更新一个连接字符串。我创建了如下所示的最小示例(类似于thisblog中的示例)。问题是,每当我对.csproj文件执行右键单击->“发布”或右键单击->“构建部署包”时,我都没有得到正确的输出。我得到的不是转换后的web.config,而是noweb.config,而是包含两个转换文件。我做错了什么?非常感谢收到任何帮助!网络配置:网络调试配置:Web.release.config: 最佳答案 不可避

c# - 从 .NET 中的发布版本中删除代码

我一直在围绕System.Diagnostics.Debug的使用做一些性能测试,似乎在构建Release配置时,与静态类Debug相关的所有代码都被完全删除。我想知道编译器是怎么知道的。也许有一些类或配置属性允许准确指定该行为。我正在尝试创建一些我想从Release配置中完全删除的调试代码,我想知道我是否可以像Debug类那样简单地更改配置参数来删除代码。 最佳答案 您可以申请ConditionalAttribute属性,将字符串“DEBUG”用于任何方法,并且对该项目的调用将仅出现在DEBUG构建中。这与使用#ifdef方法不同