- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我刚刚看到 3 个关于 TPL 使用的例程,它们做同样的工作;这是代码:
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Create a task and supply a user delegate by using a lambda expression.
Task taskA = new Task( () => Console.WriteLine("Hello from taskA."));
// Start the task.
taskA.Start();
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Define and run the task.
Task taskA = Task.Run( () => Console.WriteLine("Hello from taskA."));
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Better: Create and start the task in one operation.
Task taskA = Task.Factory.StartNew(() => Console.WriteLine("Hello from taskA."));
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
我只是不明白为什么 MS 提供了 3 种不同的方式来在 TPL 中运行作业,因为它们的工作方式相同:Task.Start()
、Task.Run()
Và Task.Factory.StartNew()
。
告诉我,Task.Start()
、Task.Run()
Và Task.Factory.StartNew()
都用于目的相同还是意义不同?
什么时候应该使用Task.Start()
,什么时候应该使用Task.Run()
,什么时候应该使用Task.Factory.StartNew( )
?
请通过示例帮助我根据场景详细了解它们的实际用法,谢谢。
câu trả lời hay nhất
Task.Run
是带有特定安全参数的 Task.Factory.StartNew
的简写:
Task.Factory.StartNew(
action,
CancellationToken.None,
TaskCreationOptions.DenyChildAttach,
TaskScheduler.Default);
它是在 .Net 4.5 中添加的,以帮助处理越来越频繁地使用 không đồng bộ
并将工作卸载到 ThreadPool
。
Task.Factory.StartNew
(在 .Net 4.0 中添加了 TPL)更加健壮。你应该只在 Task.Run
不够时使用它,例如当你想使用 TaskCreationOptions.LongRunning
时(尽管当委托(delegate)是异步时没有必要。更多关于在我的博客上:LongRunning Is Useless For Task.Run With async-await)。关于 Task.Factory.StartNew
的更多信息,请参见 Task.Run vs Task.Factory.StartNew
永远不要创建一个 Nhiệm vụ
và gọi Bắt đầu()
除非你找到一个非常好的理由这样做。仅当您有一部分需要创建任务但不安排任务而另一部分无需创建即可安排任务时才应使用它。这几乎从来都不是一个合适的解决方案,而且可能很危险。更多内容 "Task.Factory.StartNew" vs "new Task(...).Start"
总而言之,大多数情况下使用 Task.Run
,如果必须且永远不要使用 Bắt đầu
,请使用 Task.Factory.StartNew
。
关于c# - 关于 Task.Start() 、 Task.Run() 和 Task.Factory.StartNew() 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29693362/
đóng cửa. Câu hỏi này không tuân thủ các nguyên tắc của Stack Overflow. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Đã cập nhật câu hỏi theo chủ đề cho Stack Overflow. Đóng cửa 6 năm trước Cải thiện câu hỏi này
Tôi có các thực thể: @Entity @Table(name = "CARDS") Thẻ lớp công khai { @ManyToOne @JoinColumn(name = "PERSON_I
Tôi đang cố gắng tính toán các quy tắc bề mặt của đa giác 2D. Tôi đang sử dụng phương pháp của Newell từ wiki OpenGL để tính toán các chuẩn mực bề mặt. https://www.opengl.org/wiki/Calculate_a_S
đóng cửa. Câu hỏi này không tuân thủ các nguyên tắc của Stack Overflow. Hiện tại nó không chấp nhận câu trả lời. Sự cố này dường như không liên quan đến việc lập trình trong phạm vi được xác định trong trung tâm trợ giúp. Đã đóng cửa 7 năm trước. Cải thiện
đóng cửa. Câu hỏi này lạc đề. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Đã cập nhật câu hỏi để nó phù hợp với chủ đề về Stack Overflow. Đóng cửa 9 năm trước Cải thiện điều này
Tôi có XML sau ở đây: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
Những thay đổi chính sách sắp tới của Google buộc chúng tôi phải triển khai hộp thoại để thông báo cho người dùng EU về việc sử dụng cookie/mã nhận dạng thiết bị cho quảng cáo và phân tích. Tôi chỉ muốn hiển thị hộp thoại này cho người dùng EU. Tôi không muốn sử dụng các quyền bổ sung (ví dụ: android.p
Bài viết này được chia sẻ từ Cộng đồng Huawei Cloud "Các chuyên gia Huawei nói | "Đạo, luật và kỹ thuật" của các mô hình lớn AI ứng dụng doanh nghiệp - Tao: Cognition", tác giả: Huawei Cloud PaaS Service Xiaozhi. Điểm cốt lõi của vấn đề này là: AGI là công nghệ mà mọi người không thể tránh khỏi trong 5 đến 10 năm tới.
Tôi có một trang web liên quan đến rượu yêu cầu xác minh độ tuổi trước khi tôi có thể cho phép họ vào trang web. Tôi thực hiện việc này bằng cách sử dụng HttpModule để kiểm tra cookie và nếu không được đặt, tôi sẽ chuyển hướng chúng đến trang xác minh. Tôi xác minh tuổi và cửa hàng của họ
Ở EU, chúng tôi có luật yêu cầu các trang web phải xin phép lưu trữ cookie. Hầu hết chúng ta đều hiểu cookie và đồng ý với chúng, nhưng vẫn buộc phải chấp nhận chúng một cách rõ ràng ở mọi nơi. Vì vậy, tôi dự định viết tiện ích bổ sung này (ff & chrome)
Điều sau đây có hợp pháp trong C và/hoặc C++ không? void fn(); inline void fn() { /*Do something here*/ } Điều khiến tôi lo lắng là khai báo đầu tiên có vẻ ngụ ý rằng hàm sẽ được xác định
Tôi là một lập trình viên xuất sắc, rất giỏi!