草庐IT

c# - 通过 SendMessage 或其他方式异步 GetForegroundWindow?

有没有一种方法可以在焦点从任何窗口更改到另一个窗口(甚至在Windows应用程序之间)时得到通知,这样我就可以在用户更改焦点时立即调用我的委托(delegate)?我一直在想我可能只需要做轮询:(:(每1秒并调用GetForegroundWindow但我真的不想这样做。 最佳答案 SetWinEventHook()可能是你最好的选择;您可以监听EVENT_SYSTEM_FOREGROUND以监听前景窗口的变化-或者甚至监听EVENT_OBJECT_FOCUS以监听应用程序和控件内更精细的焦点变化。您需要将其与WINEVENT_OUT

c# - SQL Server 连接字符串异步处理=true

我正在使用.Net2.0+SQLServer2005Enterprise+VSTS2008+C#+ADO.Net来开发ASP.NetWeb应用程序。我的问题是,如果我在SQLServer身份验证模式(不是Windows身份验证模式,即在web.config的连接字符串中使用sa帐户和密码)中使用AsynchronousProcessing=true,我是想知道AsynchronousProcessing=true是否会影响我的Web应用程序的性能(或取决于我的ADO.Net代码实现模式/场景)?为什么? 最佳答案 从.NETFram

c# - 如何根据最佳实践在 C# 4 中创建异步方法?

考虑以下代码片段:publicstaticTaskFetchAsync(){stringurl="http://www.example.com",message="HelloWorld!";varrequest=(HttpWebRequest)WebRequest.Create(url);request.Method=WebRequestMethods.Http.Post;returnTask.Factory.FromAsync(request.BeginGetRequestStream,request.EndGetRequestStream,null).ContinueWith(t=

c# - 将覆盖的成员更改为异步

我正在覆盖基类库中的一个方法。但是,在我重写的实现中,我使用的是新的HttpClient,它全部基于异步方法。因此,我必须将我的方法标记为异步,这意味着我需要将方法的返回参数从字符串更改为任务。然而,编译器给出了一个错误:“返回类型必须是‘字符串’才能匹配覆盖的成员……”publicclassBaseClass{publicvirtualstringGetName(){...}}publicclassMyClass:BaseClass{publicoverrideasyncTaskGetName(){HttpClienthttpClient=newHttpClient();varres

c# - 从异步方法返回输出时推荐的方法签名?

我有一个异步方法:publicasyncTaskGetBitmapAsync(double[]pixels);假设我也有这门课:publicclassPixelData{publicdouble[]Pixels{get;}}我现在想创建一个生成BitmapSource的便捷方法输出,使用上面的异步方法来完成工作。我至少可以想出三种方法来做到这一点,但从效率和可靠性的角度来看,我并不清楚应该选择哪一种。有人可以指教吗?以下每种方法的优点和缺点是什么?选项A创建一个返回Result的同步方法的Task:publicBitmapSourceGetBitmap(PixelDatapixelDa

c# - 在库的异步方法中总是使用 'async' 和 'await' 关键字?

总结:在库方法中,什么时候应该使用async和await关键字而不是返回Task直接?我相信我的问题与thisone有关.但是,这个问题是关于.NET4.0的。和TPL,同时我将.NET4.6与async一起使用和await关键字。因此,我认为我的问题可能会得到不同的答案,因为在回答链接问题时这些关键字不存在。说明:我正在为外部WCF服务编写一个简单的包装器,该包装器生成多个SendAsync电话。现在我认为每个包装器方法应该只返回一个Task。直接不用等待。我的理解是async/await应该在应用层使用,不在库中使用。因此,例如,这是我认为我应该为每个包装器方法采用的方法:priv

c# - 异步任务与异步无效

这可能是一个非常愚蠢的问题,但我有以下代码行可以将RAW图像转换为BitmapImages:publicasyncvoidCreateImageThumbnails(stringimagePath,intimgId){awaitTask.Run(()=>controlCollection.Where(x=>x.ImageId==imgId).FirstOrDefault().ImageSource=ThumbnailCreator.CreateThumbnail(imagePath));}调用此方法CreateThumbnail()publicstaticBitmapImageCrea

c# - 未实现/支持/无效操作异步方法

将异步方法标记为未实现/不支持或无效操作的正确方法是什么。为简单起见,我将在示例中仅使用NotImplementedException,但该问题也适用于NotSupportedException和InvalidOperationException。以一种同步的方式,一个人会简单地抛出异常:publicoverridevoidX(){thrownewNotImplementedException();}在异步世界中这段代码相当于什么?/*1*/publicoverrideTaskXAsync(){thrownewNotImplementedException();}或者/*2*/publ

c# - 单元测试异步操作

我想对一个执行异步操作的方法进行单元测试:Task.Factory.StartNew(()=>{//methodtotestandreturnvaluevarresult=LongRunningOperation();});我在我的单元测试(用c#编写)中stub了必要的方法等,但问题是在我断言测试之前异步操作没有完成。我该如何解决这个问题?我应该创建TaskFactory的模拟或任何其他技巧来对异步操作进行单元测试吗? 最佳答案 您必须有某种方法来伪造任务创建。如果您将Task.Factory.StartNew调用移动到某个依赖项

c# - 如何在 EF6 异步中启动实体存储过程而不等待返回?

我只想将调用发送到SQLServer,而不是等待返回。我有一个从存储过程导入的实体函数,我想在EntityFramework6.0.0-rc1中以这种方式异步调用它。这可能吗?语法是什么?EntityFunction:RecalculateBudgetNumbers(intid) 最佳答案 启动一个新的Task,创建一个新的数据上下文并调用该函数。只是不要等待/等待该任务。让它自己运行直到完成。确保记录错误。不要吞下异常,因为它们可能是您想了解的错误。在ASP.NET设置中,请注意工作进程可以随时回收,因此您的后台工作可能会突然消失