草庐IT

c# - Xamarin.Forms - 按钮按下和释放事件

我想在按钮按下和释放时触发我的事件,但我只能在Xamarin.Forms中找到Click事件。我相信必须有一些解决方法才能获得此功能。我的基本需求是在按下按钮时启动进程,在释放按钮时停止。这似乎是一个非常基本的功能,但Xamarin.Forms目前没有。我在按钮上尝试了TapGestureRecognizer,但按钮仅触发点击事件。MyButton.Clicked+=(sender,args)=>{Log.V(TAG,"CLICKED");};vartapGestureRecognizer=newTapGestureRecognizer();tapGestureRecognizer.T

c# - 在 C# 中实现生产者/消费者模式

如何使用事件和委托(delegate)在C#中实现生产者/消费者模式?使用这些设计模式时,在资源方面需要注意什么?是否有任何我需要注意的边缘情况? 最佳答案 我知道这个帖子有点老了,但由于我有时会在搜索中遇到它,所以我决定将这个生产者-消费者代码分享给那些想知道如何实现简单的通用生产者-消费者作业队列的人。Job类用于以委托(delegate)的形式“存储”对象的方法调用。然后在处理作业时调用委托(delegate)。任何相关的参数也存储在这个Job类中。通过这个简单的模式,可以在入队和出队过程中实现多线程。实际上这只是最简单的部分

c# 如何在屏幕/显示器关闭或打开电源时获取事件?

嗨,我一直在寻找,但我找不到答案。我如何知道屏幕何时关闭或开启。不是SystemEvents.PowerModeChanged。我不知道如何检索显示/屏幕事件privateconstintWM_POWERBROADCAST=0x0218;privateconstintWM_SYSCOMMAND=0x0112;privateconstintSC_SCREENSAVE=0xF140;privateconstintSC_CLOSE=0xF060;//dontknowprivateconstintSC_MONITORPOWER=0xF170;privateconstintSC_MAXIMIZE

c# - azure 函数 : configure blob trigger only for new events

我的Azure存储中有大约80万个blob。当我使用blobTrigger创建azure函数时,它开始处理存储中的所有blob。如何将我的函数配置为仅针对新的和更新的blob触发? 最佳答案 目前没有办法做到这一点。在内部,我们通过将收据存储在我们的控制容器azure-webjobs-hosts中来跟踪我们处理了哪些blob。任何没有收据的blob或旧收据(基于blobETag)将被处理(或重新处理)。这就是为什么要处理您现有的blob——它们没有收据。BlobTrigger目前旨在确保最终处理容器中与路径模式匹配的所有blob,并

c# - 对象没有得到垃圾收集

我认为这是一个C#初学者问题,但我似乎找不到正确的解决方案。我有一个ClassOne对象,它定义了一个事件。我创建了一个ClassTwo对象,它被认为是一个黑盒子,这意味着我不知道它是否会注册到任何事件。ClassTwo的构造函数注册到ClassOne的事件。当ClassTwo对象超出范围时,问题就来了。垃圾收集器从不删除这个对象,因为它从不注销事件。所以我有两个问题:有没有办法让ClassTwo对象知道它何时超出范围?对于老C++程序员来说,这将在析构函数中,但对于C#,这不起作用。是否有调试工具可以帮助我找到此类对象?这是重现问题的示例代码:publicpartialclassMa

c# - C# 中的 EventHandler<TEventArgs> 线程安全?

使用我自定义的EventArgs例如:publiceventEventHandlerSampleEvent;来自msdn例如:publicclassHasEvent{//DeclareaneventofdelegatetypeEventHandlerof//MyEventArgs.publiceventEventHandlerSampleEvent;publicvoidDemoEvent(stringval){//Copytoatemporaryvariabletobethread-safe.EventHandlertemp=SampleEvent;if(temp!=null)temp

c# - WinForms ComboBox SelectedIndexChanged 在键入几个字符后跟 Alt+Down 时不触发

简而言之当我在ComboBox中键入一个字符时,按Alt+Down,然后按Enter或Tab,SelectedIndexChanged事件不会触发,即使SelectedIndex值确实发生了变化!为什么事件没有触发?更新如果您键入一个字符,按Alt+Down,然后键入Esc,也会发生同样的错误。您会期望Esc取消更改。但是,SelectedIndex确实发生了变化,并且SelectedIndexChanged事件没有触发。如果您只键入Alt+Down,使用箭头键浏览到一个条目,然后然后键入Esc,会发生什么情况?是否应将所选索引设置回其原始值?没那么短我有一个带有ComboBox的Wi

c# - 将任何控件与滚动条一起使用时,不会触发 MouseWheel 事件(在 C# Windows 窗体中)

MouseWheel事件没有触发当我使用带有滚动条的任何控件(ListBox、Panel、TextBox)时。重现问题:publicclassForm1:Form{privatereadonlyButtonbutton1;privatereadonlyTextBoxtextBox1;privatevoidbutton1_MouseWheel(objectsender,MouseEventArgse){ToString();//doesn'tfirewhenuncommentlinesbelow}publicForm1(){button1=newButton();textBox1=new

c# - BackgroundWorker RunWorkerCompletedEventArgs.Cancelled 始终为 false

我通过调用BackgroundWorker上的CancelAsync()方法取消我的操作,当执行落入事件RunWorkerCompleted时,属性CancelledRunWorkerCompletedEventArgs为假。不过,我不太清楚应该在何时何地将其设置为true,如EventArgs属性中所示。那么,如何呢? 最佳答案 来自MSDN:TheCancelledpropertyofRunWorkerCompletedEventArgsindicateswhetheracancellationrequestwasprocess

c# - 在没有标准 (Obj sender, EventArgs args) 签名的情况下创建事件处理程序委托(delegate)有多错误?

我了解使用标准MS事件处理程序委托(delegate)签名的好处,因为它允许您轻松扩展通过事件传递的信息,而不会破坏任何基于旧委托(delegate)签名的旧关系。我想知道在实践中人们多久遵守一次这条规则?假设我有一个像这样的简单事件publiceventNameChangedHandlerNameChanged;publicdelegatevoidNameChangedHandler(Objectsender,stringoldName,stringnewName);这是一个简单的事件,我几乎肯定我需要从NameChanged事件中知道的唯一参数是名称更改的对象、旧名称和新名称。那么