Có giao diện lời hứa cho lớp Task
như phương thức promise
của jQuery không?Lớp tác vụ .NET 4.0 - Giao diện hứa hẹn?
Trả lời
TPL và lớp Task, rất khác với lời hứa của jQuery.
A Task
thực sự hiệu quả giống với hành động ban đầu. Nếu bạn muốn có thứ gì đó chạy khi tác vụ hoàn thành, bạn sẽ sử dụng một sự tiếp tục tiếp tục trên Tác vụ. Điều này sẽ tìm kiếm một cách hiệu quả như nhiều:
Task someTask = RunMethodAsync();
someTask.ContinueWith(t =>
{
// This runs after the task completes, similar to how promise() would work
});
Nếu bạn muốn tiếp tục trên nhiều nhiệm vụ, bạn có thể sử dụng Task.Factory.
ContinueWhenAll
hoặc Task.Factory.
ContinueWhenAny
để làm cho sự tiếp tục hoạt động trên nhiều nhiệm vụ.
Điều đó nghe có vẻ như tiếp tục, vì vậy hãy sử dụng .ContinueWith(callback)
; hoặc trong C# 5.0, chỉ đơn giản là await
, tức là
var task = /*...*/
var result = await task;
// everything here happens later on, when it is completed
// (assuming it isn't already)
API khác nhau, nhưng tôi nghĩ nó làm những gì bạn đang yêu cầu (một ít khó khăn để chắc chắn ... Tôi không hoàn toàn chắc là tôi hiểu câu hỏi)
Nó có vẻ như bạn đang tìm kiếm TaskCompletionSource:
var tcs = new TaskCompletionSource<Args>();
var obj = new SomeApi();
// will get raised, when the work is done
obj.Done += (args) =>
{
// this will notify the caller
// of the SomeApiWrapper that
// the task just completed
tcs.SetResult(args);
}
// start the work
obj.Do();
return tcs.Task;
Mã này được lấy từ đây: When should TaskCompletionSource<T> be used?
- 1. Biến riêng tư trong các tác vụ .net 4.0
- 2. Dịch vụ Hosting .NET trong IIS (Không có Giao diện)
- 3. Vòng lặp không đồng bộ của jQuery hoãn (hứa hẹn)
- 4. Giao diện .NET TAPI
- 5. Hủy tương lai và hứa hẹn tại Scala
- 6. "Giao diện người dùng hiện đại (Metro) cho Windows 8, WPF, Silverlight" cho .net 4.0
- 7. Android - Kiểm soát tác vụ với Bộ hẹn giờ và Bộ hẹn giờ?
- 8. Gọi UrlDecode trong ứng dụng Giao diện điều khiển Visual Studio 2010 của C# .NET 4.0?
- 9. tham khảo một cửa sổ shell giao diện sử dụng .net 4.0
- 10. Thực hiện tác vụ nền trong Javascript
- 11. Tôi nên truyền bá ngoại lệ nhiệm vụ từ tác vụ tiếp tục trong .NET 4.0 như thế nào?
- 12. P = NP: Phương pháp hứa hẹn nhất là gì?
- 13. Svcutil.exe cho .NET 4.0?
- 14. Truyền Giao diện trong Dịch vụ WCF?
- 15. Giao diện C cho bash tương tác
- 16. Log4Net và .NET 4.0
- 17. Giao diện gọn gàng với giao diện MATLAB với mlabwrap
- 18. Thiết lập tác vụ theo lịch .Net
- 19. Giao diện lớp ở đâu nên được đặt trong thư viện lớp .NET?
- 20. Niêm phong lớp trừu tượng hoặc giao diện trong lớp .NET
- 21. Dịch vụ Web ASP.NET ở đâu trong .Net Framework 4.0?
- 22. Tại sao tôi không thể hiển thị giao diện trong dịch vụ web .NET asmx?
- 23. Tạo pdf từ giao diện .net mvc
- 24. Giao diện Deckm Blackmagic cho .Net
- 25. Giao diện đúc và đúc lớp
- 26. Lý do cho hạn chế chuỗi giao diện .NET UI
- 27. Giao diện người dùng, Lớp logic nghiệp vụ, Lớp dữ liệu và vị trí đặt các dịch vụ web
- 28. Việc sử dụng cách tạo lớp trong giao diện và giao diện bên trong lớp
- 29. Cách cập nhật giao diện người dùng từ các tác vụ con trong WinForms
- 30. Tác vụ ContinueWith() Không cập nhật Con trỏ trên Giao diện Người dùng UI
có thể xây dựng? Tôi không hiểu những gì bạn mong đợi. –