Questions tagged «task»

任务是用于并发工作的抽象,它可以表示应与程序其余部分同时执行的操作。任务是Ada中执行的并发线程,代表.NET中的异步操作,它也对应于Java中的线程。

11
如何在不等待的情况下安全地在C#中调用异步方法
我有一个async不返回任何数据的方法: public async Task MyAsyncMethod() { // do some stuff async, don't return any data } 我从另一个返回一些数据的方法中调用此方法: public string GetStringData() { MyAsyncMethod(); // this generates a warning and swallows exceptions return "hello world"; } 在MyAsyncMethod()不等待的情况下进行调用会在Visual Studio中引发“ 由于未等待此调用,因此当前方法会在调用完成之前继续运行 ”警告。在该警告的页面上,它指出: 仅当您确定不想等待异步调用完成并且被调用的方法不会引发任何异常时,才应考虑禁止显示警告。 我确定我不想等待通话结束。我不需要或没有时间。但是通话可能会引发异常。 我已经几次遇到这个问题,并且我确定这是一个常见的问题,必须有一个通用的解决方案。 如何安全地调用异步方法而不等待结果? 更新: 对于建议我只是等待结果的人们,这是响应我们Web服务(ASP.NET Web API)上的Web请求的代码。在UI上下文中等待将保持UI线程空闲,但是在Web请求调用中等待将等待Task完成,然后再响应请求,从而无故增加了响应时间。

2
何时正确使用Task.Run以及何时仅异步等待
我想问您关于何时使用正确的体系结构的意见Task.Run。我在WPF .NET 4.5应用程序(使用Caliburn Micro框架)中遇到了滞后的UI。 基本上我在做(非常简化的代码片段): public class PageViewModel : IHandle<SomeMessage> { ... public async void Handle(SomeMessage message) { ShowLoadingAnimation(); // Makes UI very laggy, but still not dead await this.contentLoader.LoadContentAsync(); HideLoadingAnimation(); } } public class ContentLoader { public async Task LoadContentAsync() { await DoCpuBoundWorkAsync(); await DoIoBoundWorkAsync(); await DoCpuBoundWorkAsync(); // I …

6
Rails Rake任务是否提供对ActiveRecord模型的访问?
我正在尝试创建一个自定义的rake任务,但似乎我无权访问我的模型。我认为这是Rails任务中隐含的内容。 我在lib / tasks / test.rake中有以下代码: namespace :test do task :new_task do puts Parent.all.inspect end end 这是我的父模型的样子: class Parent < ActiveRecord::Base has_many :children end 这是一个非常简单的示例,但是出现以下错误: /> rake test:new_task (in /Users/arash/Documents/dev/soft_deletes) rake aborted! uninitialized constant Parent (See full trace by running task with --trace) 有任何想法吗?谢谢

5
UI线程上的任务继续
是否有一种“标准”方法来指定任务继续应该在创建初始任务的线程上运行? 目前,我有下面的代码-它正在工作,但是跟踪调度程序并创建第二个Action似乎是不必要的开销。 dispatcher = Dispatcher.CurrentDispatcher; Task task = Task.Factory.StartNew(() => { DoLongRunningWork(); }); Task UITask= task.ContinueWith(() => { dispatcher.Invoke(new Action(() => { this.TextBlock1.Text = "Complete"; } });
214 c#  .net  wpf  multithreading  task 




15
异步运行PHP任务
我在一个比较大的Web应用程序上工作,后端主要使用PHP。代码中有几个地方需要完成一些任务,但是我不想让用户等待结果。例如,在创建新帐户时,我需要向他们发送欢迎电子邮件。但是当他们按下“完成注册”按钮时,我不想让他们等到实际发送电子邮件之后,我只想开始该过程,并立即向用户返回一条消息。 到目前为止,在某些地方,我一直在使用exec()感觉像是被黑客入侵。基本上是这样的: exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); 这似乎可行,但我想知道是否有更好的方法。我正在考虑编写一个在MySQL表中排队任务的系统,以及一个单独的长期运行的PHP脚本,该脚本每秒查询一次该表,并执行它发现的所有新任务。如果将来需要的话,这还具有让我将来在几台工作机之间分配任务的优势。 我在重新发明轮子吗?有没有比exec()hack或MySQL队列更好的解决方案?

5
'await'有效,但调用task.Result挂起/死锁
我有以下四个测试,运行时最后一个挂起。为什么会这样: [Test] public void CheckOnceResultTest() { Assert.IsTrue(CheckStatus().Result); } [Test] public async void CheckOnceAwaitTest() { Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceAwaitTest() { Assert.IsTrue(await CheckStatus()); Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceResultTest() { Assert.IsTrue(CheckStatus().Result); // This hangs Assert.IsTrue(await CheckStatus()); } private async Task<bool> CheckStatus() { var restClient = new …
126 c#  nunit  task  deadlock  async-await 

5
如何在Eclipse中启用TODO / FIXME / XXX任务标签?
在使用Eclipse的所有岁月中,直到现在我还不知道TODO / FIXME / XXX注释标记应该出现在任务列表中。显然,这是默认情况下处于禁用状态的东西,因为我一直在使用这些标记,直到使用Eclipse为止,而且从未见过其中一个出现在任务列表中。谁能指出如何启用此功能?我看不到任何首选项选项,说明“让我的源代码标签出现在任务列表中”的含义。如果存在的话,这将是一个不错的功能,但我开始对此表示怀疑。 我问了一下,并且正如其他人向我建议的那样,这些事情显然没有任何作用,但是我还是尝试过: 升级到最新版本的Eclipse。 重新启动Eclipse。 关闭并重新打开任务列表。 刷新项目。 我正在使用: Web开发人员的Eclipse Java EE IDE。 版本:Helios Service Release 1 内部版本号:20100917-0705
121 eclipse  tags  task 

2
等待和ContinueWith之间的区别
在下面的示例中,有人可以解释是否await和ContinueWith是同义词。我正在尝试第一次使用TPL,并且已经阅读了所有文档,但不了解其中的区别。 等待: String webText = await getWebPage(uri); await parseData(webText); ContinueWith: Task<String> webText = new Task<String>(() => getWebPage(uri)); Task continue = webText.ContinueWith((task) => parseData(task.Result)); webText.Start(); continue.Wait(); 在特定情况下,一个相对于其他优先吗?

2
等待与task.Result相同的已完成任务?
我目前正在阅读Stephen Cleary撰写的“ C#Cookbook中的并发性 ”,并且注意到以下技术: var completedTask = await Task.WhenAny(downloadTask, timeoutTask); if (completedTask == timeoutTask) return null; return await downloadTask; downloadTask是对的调用httpclient.GetStringAsync,timeoutTask正在执行Task.Delay。 如果它没有超时,则downloadTask已经完成。downloadTask.Result考虑到任务已经完成,为什么需要第二次等待而不是返回?

7
Timer和TimerTask与Java中的线程+睡眠
我在这里发现了类似的问题,但没有满意的答案。所以再改一下这个问题- 我有一项需要定期执行的任务(例如间隔1分钟)。与创建一个带有睡眠无限循环的新线程相比,使用Timertask&Timer这样做有什么好处? 使用timertask-的代码段 TimerTask uploadCheckerTimerTask = new TimerTask(){ public void run() { NewUploadServer.getInstance().checkAndUploadFiles(); } }; Timer uploadCheckerTimer = new Timer(true); uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000); 使用Thread和sleep-的代码段 Thread t = new Thread(){ public void run() { while(true) { NewUploadServer.getInstance().checkAndUploadFiles(); Thread.sleep(60 * 1000); } } }; t.start(); 如果逻辑执行花费的时间超过间隔时间,我真的不必担心是否会错过某些周期。 请对此发表评论。 更新: 最近,我发现使用Timer与Thread.sleep()之间还有另一个区别。假设当前系统时间为11:00 AM。如果由于某种原因将系统时间回滚到10:00 …
102 java  timer  while-loop  sleep  task 



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.