Tôi muốn có thể tạo một tác vụ mà không cần khởi động tác vụ, tương tự như chạy var a = new Task(); a.Start();
nhưng với một nhà máy tùy chỉnh. Các nhà máy cung cấp StartNew()
, nhưng tôi không thể tìm thấy một phương pháp để tách riêng hai hành động. Điều này có thể không?Tạo nhưng không bắt đầu một nhiệm vụ với nhà máy sản xuất nhiệm vụ tùy chỉnh?
Trả lời
A TaskFactory
về cơ bản là hai bộ tùy chọn mặc định (tạo và tiếp tục), mã thông báo hủy mặc định và trình lập lịch tác vụ.
Bạn có thể chỉ định mã thông báo hủy và tùy chọn tạo khi bạn vừa mới tạo một tác vụ - và sau đó khởi động nó trên bất kỳ trình lập lịch biểu nào bạn muốn. Vì vậy:
Task task = new Task(action,
factory.CancellationToken,
factory.CreationOptions);
...
task.Start(factory.Scheduler);
nên thực hiện công việc ngoài các tùy chọn tiếp tục. Các tùy chọn tiếp tục chỉ có liên quan khi bạn thêm phần tiếp tục, mà bạn có thể chỉ định trực tiếp. Có điều gì không được đề cập đến không?
(Một điều cần lưu ý là Mô hình không đồng bộ dựa trên nhiệm vụ thường xoay quanh các tác vụ "nóng" được bắt đầu vào lúc bạn nhìn thấy chúng. Vì vậy, có thể bạn muốn tránh để lộ các tác vụ chưa được khởi động quá rộng.)
Điều này làm cho việc tạo ra các nhà máy dự phòng khi chúng tôi đang sửa đổi hành vi tác vụ theo cách thủ công khi tạo nhiệm vụ (và tiếp tục). Tôi đã hy vọng có một phương pháp tao nhã hơn mà tôi đã bỏ qua, nhưng nếu tôi không cho rằng đó là điều tốt để biết quá =) – Jake
@Jake: Vâng, bạn có thể muốn giữ cho nhà máy ở đó giống như cách đóng gói các tùy chọn đó - hoặc để bắt đầu các nhiệm vụ khác ngay lập tức. Quan điểm của tôi là nó không thực sự làm nhiều mà bạn không thể làm bằng tay. –
- 1. Tạo một nhiệm vụ với nhịp tim
- 2. Bắt đầu Hibernate 3.5 - Vấn đề với nhiệm vụ kiến
- 3. Xóa nhiệm vụ và bắt đầu một hoạt động mới
- 4. Vòng đời nhiệm vụ
- 5. C# thời gian chờ của nhà máy nhiệm vụ
- 6. .Tiếp tục bắt đầu trước khi hoàn thành nhiệm vụ
- 7. Xuất nhiệm vụ sang 'C bằng DPI
- 8. Make nhiệm vụ tùy chỉnh người trả boolean trong Gradle
- 9. Chạy một nhiệm vụ sau khi tất cả các nhiệm vụ đã được hoàn thành
- 10. ContinueWith một hủy nhiệm vụ
- 11. Làm thế nào để bắt đầu nhiệm vụ nền chạy dài trong dịch vụ android
- 12. Nhiệm vụ cần làm hồ sơ
- 13. GenerateOfficeAddInManifest lỗi nhiệm vụ
- 14. hoàn thành nhiệm vụ
- 15. Làm thế nào để chờ đợi trên tất cả các tác vụ (tạo nhiệm vụ và nhiệm vụ phụ) mà không sử dụng TaskCreationOptions.AttachedToParent
- 16. Kiểm tra Nhiệm vụ Rake
- 17. Chạy nhiệm vụ cần tây khi không thể nhập nhiệm vụ
- 18. Lập lịch nhiệm vụ chạy một lần, sử dụng không gian tên nhiệm vụ Spring
- 19. nhiệm vụ android giết
- 20. cào biến nhiệm vụ
- 21. Bắt đầu từ mùa xuân <tác vụ: theo lịch-nhiệm vụ>
- 22. Bắt đầu nhiều nhân viên DelayedJob với hàng đợi cụ thể qua các nhiệm vụ Capistrano
- 23. Chuỗi nhiệm vụ không có TaskCompletionSource?
- 24. Nhiệm vụ sản xuất không công nhận mô hình của tôi
- 25. ActiveRecord :: ConnectionNotEstablished trong một nhiệm vụ rake
- 26. Gọi một nhiệm vụ cho mỗi tập tin trong một fileset với kiến đồng bằng với tên tập tin như một tham số (không có nhiệm vụ contrib, không có nhiệm vụ riêng)
- 27. Django Celery nhận nhiệm vụ
- 28. Thêm phụ thuộc nhiệm vụ mới vào các nhiệm vụ SBT tích hợp?
- 29. Nhiệm vụ cào đa luồng
- 30. Cách lên lịch một nhiệm vụ để thực hiện trong Thư viện song song nhiệm vụ
Điều bạn có thể thấy thú vị: ["Task.Factory.StartNew" vs "nhiệm vụ mới (...). Bắt đầu"] (http://blogs.msdn.com/b/pfxteam/archive/2010/06/ 13/10024153.aspx). Nhà văn tạo ra một số điểm thú vị về lý do tại sao bạn có thể không muốn trì hoãn nhiệm vụ bắt đầu. –