草庐IT

Activity回调

全部标签

c# - 在线程之间共享局部变量是否安全(通过回调闭包)?

我想做类似下面的事情-基本上我正在调用一个异步操作,它将在另一个线程中调用回调,我想等待它完成“内联”。我担心的是,由于例如存储在寄存器中,跨线程共享的更改变量(栏和事件)可能不会同步。如果它们是成员变量,我可以将它们标记为volatile,但volatile不能用于在堆栈上创建的局部变量。我可以使用成员变量,但我认为它更干净,不会因为将其全部保留在本地而使我的类困惑。Barbar=null;ManualResetEventevent=newManualResetEvent(false);foo.AsyncOperation(newAction(()=>{//Thisdelegatew

c# - 从任务回调到主线程

因为我不太了解线程,所以我有一个问题。我想在后台和后台方法中做一些事情,我想在某些情况下切换回主线程,否则在后台工作。我怎样才能实现这个功能?我正在使用从UI类(c#)调用StartSyncThreadasyncvoidStartSyncThread(){awaitDoSyncAsync();}TaskDoSyncAsync(){returnTask.Run(()=>DoSync());}在DoSync方法中,我想切换回主线程,以便我可以更改UI。请给我一个简单的解决方案来做到这一点。提前致谢! 最佳答案 首先启动您的异步进程,然后

c# - ASP.NET - Ajax.BeginForm OnSuccess 回调与参数

我想向我的OnSuccess回调添加更多参数(但保留ajax上下文变量)。我所做的是:using(Ajax.BeginForm("Register",newAjaxOptions(){OnSuccess="newfunction(arg){HandleBasicForm(arg,'MyCustomVariable')}",...JS函数:functionHandleBasicForm(ajaxContext,myCustomVariable){varcontent=ajaxContext.get_response().get_object();....}但是ajaxContext为空。

c# - 异步任务方法后触发回调

我需要在foreach时触发回调循环已完成对List中每个项目的搜索.privateasyncvoidstartSearchBtn_Click(objectsender,EventArgse){awaitSearch(files,selectTxcDirectory.SelectedPath,status);}privatestaticasyncTaskSearch(Listfiles,stringpath,LabelstatusText){foreach(stringfileinfiles){XmlDocumentxmlDoc=newXmlDocument();xmlDoc.Load

c# - 将异步回调传递给 Timer 构造函数

我有异步回调,它被传递到Timer(来自System.Threading)构造函数:privateasyncTaskHandleTimerCallback(objectstate){if(timer==null)return;if(asynTaskCallback!=null){awaitHandleAsyncTaskTimerCallback(state);}else{HandleSyncTimerCallback(state);}}和计时器:timer=newTimer(asynco=>awaitHandleTimerCallback(o),state,CommonConstant

c# - Moq 异步回调因多个参数而失败

如果这是我做错了什么,或者它是最小起订量或NUnit中的问题,我正在尝试锻炼。我正在调用一个soap端点,我的服务引用正在生成同步和异步方法。我正在调用的电话看起来像:publicasyncTaskDoThisAsync(idnameobjectmyobj,intid){awaitws.DoSomethingAsync(myobj,id);}我正在设置我的最小起订量以返回回调,因此我可以将调用Web服务时使用的参数进行交互。我的测试看起来像:varcallback=newidnameobject();wsMock.SetUp(w=>w.DoSomethingAsync(It.IsAny

c# - 提供 .NET 方法作为委托(delegate)回调

在PowerShell中将.NET方法作为委托(delegate)回调传递给.NET对象的语法是什么。例如:C#:publicclassClass1{publicstaticvoidMyMethod(Actionobj){obj("Hey!");}}publicclassClass2{publicstaticvoidCallback(objectobj){Console.Writeline(obj.ToString());}}PowerShell:[Class1]::MyMethod([Class2]::Callback)这行不通。 最佳答案

c# - C# 中的回调

我想要一个库,其中包含一个接受对象作为参数的函数。有了这个对象,我希望能够在X完成时调用指定的函数。将被调用的函数由调用者指定,X将由库完成和监控。我该怎么做?作为引用,我使用的是C#和.NET3.5 最佳答案 两种选择:让函数接受delegate(Action表示不返回任何内容的回调,Func表示返回任何内容)并在调用时使用匿名委托(delegate)或Lambda表达式。使用接口(interface)使用委托(delegate)/lambdapublicstaticvoidDoWork(ActionprocessAction){

c# - 在其回调方法中停止计时器

我有一个System.Threading.Timer,它每10毫秒调用一次相应的事件处理程序(回调)。该方法本身不可重入,有时可能会超过10毫秒。因此,我想在方法执行期间停止计时器。代码:privateTimer_creatorTimer;//BackgroundWorker'sworkprivatevoidCreatorWork(objectsender,DoWorkEventArgse){_creatorTimer=newTimer(CreatorLoop,null,0,10);//someothercodethatworkerisdoingwhilethetimerisactiv

javascript - 如何从 javascript Array.map() 回调中排除一些元素

基本上,我想实现以下内容:varcategories=[];varproducts=//somearrayofproductobjectsproducts.map(function(value){if(categories.indexOf(value.Category===-1))categories.push(value.Category);});因此,categories数组包含唯一的产品类别列表。我觉得应该有更好的方法来做到这一点,但没有想到。如果没有,那么一开始就没有必要使用map()。我可以做的很简单varcategories=[];varproducts=//somearr