标签: task

任务与线程差异

我是并行编程的新手..NET中有两个类:TaskThread.

所以,问题是:这些课程有什么区别?何时更好地使用Thread何时Task

.net c# multithreading task

307
推荐指数
4
解决办法
24万
查看次数

正确使用Task.Run时和async-await时

我想问你关于正确架构何时使用的意见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 am not really sure what all I can consider as CPU bound as slowing down the UI
        await DoSomeOtherWorkAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

从我阅读/看到的文章/视频中,我知道await async不一定在后台线程上运行,并且需要在后台开始工作,需要等待它Task.Run(async () => …

c# asynchronous task async-await

288
推荐指数
2
解决办法
25万
查看次数

如何在没有等待的情况下在C#中安全地调用异步方法

我有一个async不返回任何数据的方法:

public async Task MyAsyncMethod()
{
    // do some stuff async, don't return any data
}
Run Code Online (Sandbox Code Playgroud)

我从另一个返回一些数据的方法调用它:

public string GetStringData()
{
    MyAsyncMethod(); // this generates a warning and swallows exceptions
    return "hello world";
}
Run Code Online (Sandbox Code Playgroud)

MyAsyncMethod()没有等待的情况下进行呼叫会导致" 因为此呼叫未被等待,当前方法在呼叫完成之前继续运行 "在visual studio中发出警告.在该警告的页面上,它指出:

只有当您确定不想等待异步调用完成并且被调用的方法不会引发任何异常时,才应考虑禁止警告.

我确定我不想等待电话完成; 我不需要或没有时间.但这一呼吁可能引发例外.

我偶然发现了这个问题几次,我确信这是一个必须有共同解决方案的常见问题.

如何在不等待结果的情况下安全地调用异步方法?

更新:

对于那些建议我等待结果的人来说,这是响应我们的Web服务(ASP.NET Web API)上的Web请求的代码.在UI上下文中等待保持UI线程空闲,但是在Web请求调用中等待将在响应请求之前等待任务完成,从而无缘无故地增加响应时间.

c# exception task task-parallel-library async-await

283
推荐指数
7
解决办法
16万
查看次数

rails rake任务是否可以访问ActiveRecord模型?

我正在尝试创建自定义rake任务,但似乎我无法访问我的模型.我认为这是rails任务中隐含的内容.

我在lib/tasks/test.rake中有以下代码:

namespace :test do
  task :new_task do
    puts Parent.all.inspect
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的父模型的样子:

class Parent < ActiveRecord::Base
  has_many :children
end
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的例子,但我收到以下错误:

/> rake test:new_task
(in /Users/arash/Documents/dev/soft_deletes)
rake aborted!
uninitialized constant Parent

(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

rake activerecord ruby-on-rails task

224
推荐指数
5
解决办法
5万
查看次数

UI线程上的任务继续

是否有一种"标准"方式来指定任务延续应该在创建初始任务的线程上运行?

目前我有下面的代码 - 它正在工作,但跟踪调度程序和创建第二个动作似乎是不必要的开销.

dispatcher = Dispatcher.CurrentDispatcher;
Task task = Task.Factory.StartNew(() =>
{
    DoLongRunningWork();
});

Task UITask= task.ContinueWith(() =>
{
    dispatcher.Invoke(new Action(() =>
    {
        this.TextBlock1.Text = "Complete"; 
    }
});
Run Code Online (Sandbox Code Playgroud)

.net c# wpf multithreading task

205
推荐指数
5
解决办法
9万
查看次数

删除celery/rabbitmq中的所有待处理任务

如何在不知道task_id每个任务的情况下删除所有待处理任务?

task rabbitmq celery celery-task

178
推荐指数
8
解决办法
10万
查看次数

在C#中Task.FromResult <TResult>有什么用?

在C#和TPL(任务并行库)中,Task该类表示正在进行的工作,它产生类型为T的值.

我想知道Task.FromResult方法有什么需要?

那就是:在您已经拥有生产价值的情况下,需要将其包装回任务中?

我唯一想到的是它被用作接受Task实例的其他方法的一些适配器.

.net c# task task-parallel-library async-await

170
推荐指数
5
解决办法
7万
查看次数

如何中止/取消TPL任务?

在一个线程中,我创建一些System.Threading.Task并启动每个任务.

当我做一个.Abort()杀死线程时,任务不会中止.

我怎样才能传递.Abort()给我的任务?

.net c# multithreading task abort

144
推荐指数
7
解决办法
15万
查看次数

异步运行PHP任务

我在一个有点大的Web应用程序上工作,后端主要是在PHP中.代码中有几个地方我需要完成一些任务,但我不想让用户等待结果.例如,在创建新帐户时,我需要向他们发送欢迎电子邮件.但是当他们点击"完成注册"按钮时,我不想让他们等到实际发送电子邮件,我只想启动该过程,并立即向用户返回消息.

到目前为止,在某些地方,我一直在使用exec()感觉像是一个黑客.基本上做的事情如下:

exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我想知道是否有更好的方法.我正在考虑编写一个在MySQL表中排队任务的系统,以及一个单独的长时间运行的PHP脚本,每秒查询一次该表,并执行它找到的任何新任务.如果需要的话,这也有可能让我将来在几台工作机器之间拆分任务.

我是在重新发明轮子吗?有没有比exec()hack或MySQL队列更好的解决方案?

php queue asynchronous background task

136
推荐指数
7
解决办法
11万
查看次数

如何在Eclipse中启用TODO/FIXME/XXX任务标记?

在我使用Eclipse的这些年里,我从未知道TODO/FIXME/XXX注释标签应该出现在任务列表中.显然这是默认禁用的东西,因为我一直在使用这些标签,只要我一直在使用Eclipse,我从未见过其中一个出现在任务列表中.任何人都可以指出如何启用此功能?我看到没有任何偏好选项可以说明"让我的源代码标签出现在任务列表中"的效果.如果它存在,这将是一个很好的功能,但我开始怀疑.

我已经四处询问了,正如其他人向我建议的那样,这些东西显然没有任何效果,但我还是试过了:

  • 升级到最新版本的Eclipse.
  • 重启Eclipse.
  • 关闭并重新打开任务列表.
  • 刷新项目.

我正在使用:
面向Web开发人员的Eclipse Java EE IDE.
版本:Helios Service Release 1
Build id:20100917-0705

eclipse tags task

120
推荐指数
4
解决办法
12万
查看次数