草庐IT

任务栏

全部标签

c# - Xamarin:不传播任务引发的异常

我在Xamarin中有以下代码(在ios中测试):privatestaticasyncTaskTaskWithException(){returnawaitTask.Factory.StartNew(()=>{thrownewException("Booo!");return"";});}publicstaticasyncTaskRunTask(){try{returnawaitTaskWithException();}catch(Exceptionex){Console.WriteLine(ex.ToString());throw;}}调用它作为awaitRunTask(),确实会从

c# - 在执行长时间运行的数据库任务时处理 Web 服务超时

我们其中一款产品的架构是典型的3层解决方案:C#客户端WCF网络服务SQLServer数据库客户端从网络服务请求信息。Web服务访问数据库以获取信息并将其返回给客户端。问题来了。其中一些查询可能需要很长时间,而且我们事先不知道哪些查询会很慢。我们知道有些请求通常比其他请求慢,但如果有足够的数据,即使是最简单的请求也可能很慢。有时使用查询或运行大量数据的报告。在大量数据减慢查询速度之前,查询只能优化到目前为止。如果数据库中的查询达到SQLServer中的最大查询超时,数据库查询将终止,Web服务将错误返回给客户端。这是明白的。我们可以处理这些错误。客户端正在等待网络服务调用完成。如果数据

c# - 通过构建器模式使用异步任务

我目前使用构建器模式构建我的MVCView模型。varviewModel=builder.WithCarousel(),.WithFeaturedItems(3),.Build()我遇到的问题是当我必须对异步方法进行服务调用时。这意味着我的构建器方法必须返回Task而不是HomeViewModelBuilder.这阻止了我必须链接构建方法await他们。示例方法publicasyncTaskWithCarousel(){varcarouselItems=await_service.GetAsync();_viewModel.Carousel=carouselItems;returnth

c# - 具有指定结果的任务并行库 WaitAny

我正在尝试编写一些代码来并行调用多个不同服务器的Web服务,因此TPL似乎是显而易见的选择。我的Web服务调用中只有一个会返回我想要的结果,而其他所有调用都不会。我正在尝试找到一种有效地拥有Task.WaitAny的方法,但只有在第一个匹配条件的Task返回时才解除阻塞。我尝试使用WaitAny但无法确定过滤器的放置位置。我做到了这一点:publicvoidSearchServers(){varservers=new[]{"server1","server2","server3","server4"};vartasks=servers.Select(s=>Task.Factory.St

c# - 异步任务<IEnumerable<T>> 抛出 "is not an iterator interface type"错误

仅当我使用async时,下面的代码才会抛出isnotaniteratorinterfacetypeawait并包装IEnumerable与任务。如果我删除asyncawait,它将与IEnumerable>一起使用.privateasyncTask>>GetTableDataAsync(CloudTablecloudTable,TableQuerytableQuery)whereT:ITableEntity,new(){TableContinuationTokencontineousToken=null;do{varcurrentSegment=awaitGetAzureTableDa

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

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

c# - 启动长时间后台任务

用户在我的网站上请求一些页面。我想做什么?向用户发送快速答复并启动需要很长时间的后台任务。看起来像:publicActionResultindex(){vartask=newTask(Stuff);//starttaskasynctask.start();returnView();}publicvoidStuff(){//longtimeoperation}我该怎么做? 最佳答案 您可以向TaskStartNew()方法传递一个参数,指示您正在启动的任务是“长时间运行”的,这会提示任务计划程序在新线程上启动任务。vartask=Ta

c# - 将任务作为参数传递

我不确定这是否可行,所以我在这里:我有一系列Action可以执行多个asyncTaskMethodA(...){//somecode//acalltospecificAsyncIOboundmethod//somecode}还有MethodB()、MethodC()等,除了调用特定的AsyncIO绑定(bind)方法外,它们的代码完全相同.我正在尝试找到一种将任务指针传递给方法的方法,以便我们稍后可以在Method()中执行它。我目前正在做的是:privateasyncTaskMethod(Func>func){//somecodevara=awaittask.Run(func);//

c# - C# 中的 Windows 8 任务管理器应用程序历史记录

我正在尝试从C#访问应用程序历史记录。我想提供与任务管理器中相同的信息,但找不到api/示例。当然,我实现了一个桌面应用程序。具体问题:我对CPU/RAM不感兴趣。我唯一想得到的就是时间。更新要准确显示我在说什么,请看这个屏幕: 最佳答案 没有支持的方法来获取此信息。对不起。 关于c#-C#中的Windows8任务管理器应用程序历史记录,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

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

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