- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果我将使用 TaskFactory.StartNew(MyFunc(), new CancellationToken(), TaskCreationOptions.None, TaskScheduler.Current)
会怎样?
对于 TaskScheduler.Current
,它会同步执行 MyFunc() 还是使用一些随机线程,或者其他什么?
最佳答案
With TaskScheduler.Current will it just synchronous execute MyFunc() or use some random thread, or something else?
这取决于执行范围以及Current
的值是多少。尽管极不可能同步执行此操作。即使使用UI同步上下文,也会使用BeginInvoke
异步发布,但它会发布到 UI 线程。
关于Current
的值,the docs say :
When not called from within a task, Current will return the Default scheduler.
如果你从另一个 Task
执行这段代码,你传递了另一个 TaskScheduler
,那么 Current
的值就是那就是你的代表将被运行的地方。例如,如果 TaskScheduler.FromCurrentSynchronizationContext
是从 UI 线程捕获的,您最终会将此委托(delegate)发布到 UI 消息循环。否则,它将使用 Default
,即 ThreadPoolTaskScheduler
,然后您的委托(delegate)将在任意线程池线程上被调用。
关于c# - TaskFactory.StartNew 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28191033/
如果我从 UI 中单击按钮开始计算密集型 TPL 任务,这里哪种方法最好: TaskFactory.StartNew 或 TaskFactory.FromAsync ?我需要以下内容:任务不能挂 UI
我在使用 TaskFactory 时遇到了一些奇怪的问题: Task parent = Task.Run(() => { int length = 100; var results =
我发现了很多使用 TaskFactory 的方法,但我找不到任何有关启动更多任务以及观察一个任务何时结束并开始另一个任务的方法。 我总是希望有 10 个任务在工作。 我想要这样的东西 int nTot
如果我将使用 TaskFactory.StartNew(MyFunc(), new CancellationToken(), TaskCreationOptions.None, TaskSchedul
我有以下代码: var factory = new TaskFactory(); for (int i = 0; i foo(i1)); } static void foo(int i) {
如何使用 TaskFactory 创建新的 UI 元素?当我尝试时出现以下错误: 调用线程必须是 STA,因为很多 UI 组件都需要这个。 示例代码 Dim txtBoxList as new Lis
注意:这是在Unity3D下 我需要使用自定义同步上下文运行内部任务,如下所示: 外部任务 -> 在默认调度程序上 内部任务 -> 在具有自定义同步上下文的自定义调度程序上 这是因为内部任务中的某些对
我正在使用 TaskFactory 使用以下代码启动新任务。 var task = Task.Factory.StartNew(async () => { await Task.Run(()
详见 TPL and Traditional .NET Framework Asynchronous Programming MSDN 文章和 Stephen Toub 的 Tasks and the
大约有 1000 个任务在运行,但有时我会收到任务调度程序抛出的以下内存不足异常。可能是什么原因以及如何避免。 System.Threading.Tasks.TaskSchedulerExceptio
在 .NET 4.0 中使用 TPL 启动新的仅产生副作用的任务(即:不返回任何结果的任务)的惯用方法是使用以下 API: Task Task.Factory.StartNew(Action, obj
显然是 TaskFactory.StartNew .NET 4.0 中的方法旨在替代 ThreadPool.QueueUserWorkItem ( according to this post, an
我有一个 NServiceBus 主机,一旦有关特定用户帐户的消息通过,它就会去下载一大堆数据。一个数据文件大约 3Mb(myob - 通过网络服务调用),另一个大约 2Mb(restful 端点,相
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Cancellation token in Task constructor: why? 此方法接收一个 C
除了最常见的仅使用“action”参数调用 TaskFactory.StartNew 的形式(1) https://msdn.microsoft.com/en-us/library/dd321439(
http://msdn.microsoft.com/en-us/library/dd988458.aspx 更新: 所以,让我们讨论这篇文章:http://msdn.microsoft.com/en-
我有一个返回任务的方法,例如: public static Task SendAsync(this Socket socket, byte[] buffer, int offset, int coun
我想知道在方法的阻塞版本上使用 TPL TaskFactory.FromAsync 和使用 TaskFactory.StartNew 之间是否存在任何性能影响。我正在编写一个 TCP 服务器,它支持不
我听说线程的责任应该由应用程序承担,我不应该在异步方法中使用 Task.Run 或 TaskFactory.StartNew 。 但是,如果我有一个库,其中的方法执行相当繁重的计算,那么要释放例如接受
我正在尝试测试一些依赖 Task 进行后台计算的类(从网络位置检索数据)。该类获取一个未启动的任务实例,添加一个 ContinueWith 方法,然后在该任务上调用 Start。像这样的东西: pri
我是一名优秀的程序员,十分优秀!