草庐IT

c# - 异步/等待和缓存

我的服务层正在将大量Db请求缓存到memcached,这是否导致无法使用Async/Await??例如,我怎么能等待这个?publicvirtualStoreGetStoreByUsername(stringusername){return_cacheManager.Get(string.Format("Cache_Key_{0}",username),()=>{return_storeRepository.GetSingle(x=>x.UserName==username);});}注意:如果缓存中存在键,它将返回一个“Store”(不是Task),如果缓存中不存在键,它将执行lam

c# - 如何在超时后取消任务等待

我正在使用此方法以编程方式实例化网络浏览器,导航到url并在文档完成时返回结果。如果文档加载时间超过5秒,我将如何停止Task并让GetFinalUrl()返回null?我见过许多使用TaskFactory的示例,但我无法将其应用到这段代码中。privateUriGetFinalUrl(PortalMerchantportalMerchant){SetBrowserFeatureControl();UrifinalUri=null;if(string.IsNullOrEmpty(portalMerchant.Url)){returnnull;}UritrackingUrl=newUri

c# - 等待/异步引用错误

我正在尝试在某些返回字符串的函数中执行一些异步操作。asyncprivatevoidbutton1_Click(objectsender,EventArgse){stringoutput=awaitthr_calc(this,null);}asyncprivateTaskthr_calc(objectsender,EventArgse){returnawaitzzztest();}stringzzztest(){stringasd;//somestuffherereturnasd;}但它在每个包含单词async/await的字符串上给我错误!我在Windows桌面上使用俄语版的msvs

c# - 让多个线程工作并等待所有线程完成的最佳方法是什么?

我正在编写一个简单的应用程序(同样适用于我的妻子:-P),它可以对可能存在的大量图像进行一些图像处理(调整大小、时间戳等)。所以我正在编写一个可以同步和异步执行此操作的库。我决定使用Event-basedAsynchronousPattern.使用此模式时,您需要在工作完成时引发一个事件。这是我不知道什么时候完成的地方。所以基本上,在我的DownsizeAsync方法(缩小图像尺寸的异步方法)中,我正在做这样的事情:publicvoidDownsizeAsync(string[]files,stringdestination){foreach(varnameinfiles){strin

c# - 等待和异步属性中的方法错误 'Cannot await ' System.Threading.Tasks.Task'

我已经为.NETFramework4、Silverlight4和5以及WindowsPhone7.5和8安装了NuGetPackageAsync。Version1.0.16我使用的是Microsoft.NET4.0,但由于虚拟主机包限制,我无法升级。(可悲!)我的测试代码:(我正在执行LinqtoSQL查询代替Thread.Sleep)publicclassSearch{publicasyncTask>GetResults(stringSearchString){awaitSystem.Threading.Tasks.Task.Factory.StartNew(()=>Thread.S

c# - .NET 的 WebBrowser 类的异步/等待实现

老读者,第一次张贴在这里。我的目标:能够在使用WebBrowser类时利用async/await。由于WebBrowser.Navigate(stringurl)是一种异步方法,在触发LoadComplete事件之前您无法检查html文档。到目前为止,这是我的(工作)代码:publicclassAsyncWebBrowser{protectedWebBrowserm_WebBrowser;privateManualResetEventm_MRE=newManualResetEvent(false);publicvoidSetBrowser(WebBrowserbrowser){this

c# - 多层 C# 应用程序中的异步/等待

我在高流量场景中有一个多层C#MVC4Web应用程序,该应用程序对各种存储库使用依赖项注入(inject)。这非常有用,因为它很容易测试,并且在生产中我们可以轻松地为特定Controller配置存储库。所有Controller都继承自AsyncController,因此返回Task的操作方法或Task真正帮助我们的服务器扩展到更多用户和solveforthedreadedthreadstarvationproblem.一些存储库使用Web服务,我们绝对可以使用Async/Await来提供可伸缩性优势。在其他情况下,有些人可能会使用无法安全线程化的非托管服务,其中async/await不

c# - 在 F# 中正确等待返回类型为 Task<T> 的异步 C# 方法

我希望能够从F#使用C#库。大多数情况下,这非常简单。但是,如果我尝试调用返回Task的函数我无法获得返回值。所以,我有具有以下定义的C#方法:publicasyncTaskReadEventAsync(stringstreamName,intposition)whereTEvent:class我正在尝试使用F#中的这个方法,如下所示:letreadEventFromEventStore(eventStore:IEventStoreRepository)(streamName:string)(position:int)=async{returneventStore.ReadEventA

c# - 如何使用异步/等待方法管理类似 NDC 的 log4net 堆栈? (每个任务堆栈?)

在普通/同步/单线程控制台应用程序中,NDC.Push可以很好地管理“当前项目”(可能在多个嵌套级别,但对于本示例只有1个级别)。例如:privatestaticILogs_logger=LogManager.GetLogger("Program");staticvoidMain(string[]args){BasicConfigurator.Configure();DoSomeWork("chunk1");DoSomeWork("chunk2");DoSomeWork("chunk3");}staticvoidDoSomeWork(stringchunkName){using(NDC

c# - AsyncLocal<T> 在非异步/等待代码中有什么作用?

我正在处理一个非常大且旧的桌面winform应用程序代码库。在此代码库中,有很多操作在后台线程中执行,主要使用BackgroundWorker。.此代码库中的一个常见模式是通过将工件绑定(bind)到正在执行的线程来隐藏复杂性。例如,数据库连接和事务存储在[ThreadStatic]中字段。我正在尝试改变这一点,并开始使用async/await代码,并受益于在池的任何线程中运行任务,并通过使用ConfigureAwait(false)允许任务在任何其他线程中继续执行.我知道[ThreadStatic]不适合async/await,我在这里阅读了几个建议使用AsyncLocal的答案相反