Bất kỳ một thể giải thích những gì là sự khác biệt giữa các phương pháp sau đây của WorkflowApplication:Windows Workflow 4: Sự khác biệt giữa WorkflowApplication Huỷ, Chấm dứt và Abort
Abort Hủy Chấm dứt
Bất kỳ một thể giải thích những gì là sự khác biệt giữa các phương pháp sau đây của WorkflowApplication:Windows Workflow 4: Sự khác biệt giữa WorkflowApplication Huỷ, Chấm dứt và Abort
Abort Hủy Chấm dứt
Sau khi tiếp tục điều tra vấn đề này, tôi muốn tóm tắt sự khác biệt:
Chấm dứt:
Cancel:
Abort:
Một ngoại lệ unhandled
Cập nhật: Hủy bỏ dường như không kích hoạt việc dỡ bỏ cá thể trong kho lưu trữ SQL persistence. Vì vậy, có vẻ như với tôi, bạn nên sử dụng Cancel hoặc Terminate và nếu bạn phải thực hiện một số hành động dựa trên trạng thái hoàn thành, bạn có thể kiểm tra CompletionState trong sự kiện Complete.
Đầu tiên, mũ ra để Steffen Opel (và ý kiến của ông dưới đây). Tôi không thể bắt được bài đăng gốc của mình linkeddocumentation là WF 3.5 cụ thể. Đã đào sâu hơn một chút.
Vì lợi ích của hậu thế, tôi đã để lại phản hồi trước đó của tôi bên dưới, được gắn nhãn là WF3.5. Vui lòng xem WF4.0 để biết một số lưu ý về Hủy, Hủy và Chấm dứt trong WF4.0.
WF4.0
Thật không may, có rất ít sự khác biệt tài liệu thảo luận rõ ràng trong Huỷ, Abort, và Chấm dứt trong WF4.0. Tuy nhiên, từ membermethoddocumentation,
Sự khác biệt giữa Hủy bỏ và Hủy/Chấm dứt là khá nổi bật. Đơn giản chỉ cần gọi Abort để giết một Workflow hoàn toàn. Sự khác biệt giữa Hủy và Chấm dứt là sắc thái hơn. Hủy không yêu cầu bất kỳ loại lý do nào (nó là một phương pháp không tham số void), trong khi đó, khi kết thúc yêu cầu một lý do (ở dạng chuỗi hoặc ngoại lệ).
Trong mọi trường hợp, thời gian chạy Quy trình làm việc sẽ không thực hiện bất kỳ hành động ngầm nào thay mặt bạn (ví dụ: Quy trình làm việc sẽ không tự động hủy kết thúc la WF3.5). Tuy nhiên, với việc xử lý sự kiện ngoại lệ có thể tùy biến cao được hiển thị bởi thời gian chạy, bất kỳ tính năng nào như vậy cũng có thể được triển khai dễ dàng.
WF3.5
hủy
Theo Msdndocumentation
Một hoạt động được đặt vào tình trạng hủy bởi một hoạt động cha mẹ một cách rõ ràng, hoặc vì một ngoại lệ đã được ném trong khi thực hiện hoạt động đó.
Trong khi hủy có thể được sử dụng để ngăn chặn toàn bộ luồng công việc (tức là được kích hoạt trên hoạt động gốc), nó thường được sử dụng để ngăn chặn các phần riêng biệt của luồng công việc (tức là phục hồi lỗi hoặc hành động rõ ràng trên một phần của phụ huynh)). Tóm lại, Hủy bỏ là một phương tiện của luồng điều khiển luồng công việc.
Abort và Chấm dứt
Một lần nữa, theo Msdn documentation
Abort khác với Chấm dứt ở chỗ trong khi Abort chỉ đơn giản là xóa trong bộ nhớ workflow dụ và có thể được khởi động lại từ điểm kiên trì cuối cùng , Chấm dứt xóa ví dụ dòng công việc trong bộ nhớ và thông báo cho dịch vụ kiên trì rằng cá thể đã được xóa khỏi bộ nhớ. Đối với SqlWorkflowPersistenceService, điều này có nghĩa là tất cả thông tin trạng thái cho cá thể dòng công việc đó sẽ bị xóa khỏi cơ sở dữ liệu khi chấm dứt. Bạn sẽ không thể tải lại thể hiện dòng công việc từ một điểm lưu trữ được lưu trước đó.
Điều này khá rõ ràng. Hủy bỏ chỉ dừng lại trong thực hiện bộ nhớ trong khi Chấm dứt dừng thực hiện trong bộ nhớ và phá hủy bất kỳ trạng thái tồn tại nào.
Hmmh, các liên kết MSDN của bạn đều nhắm mục tiêu tài liệu WF 3.5. Mặc dù có rất nhiều điểm tương đồng về khái niệm, kiến trúc [đã thay đổi đủ] (http://msdn.microsoft.com/en-us/library/dd489410.aspx) để làm cho câu trả lời của WF 3,5 thành câu hỏi WF 4 khó hiểu nhất , Tôi sợ - xem phần ví dụ * Vòng đời hoạt động * ở cuối [Kiến trúc dòng công việc Windows] (http://msdn.microsoft.com/en-us/library/dd489413.aspx) so với [Hiểu mô hình trạng thái hoạt động] (http://msdn.microsoft.com/en-us/library/bb628512%28VS.90%29.aspx) như được liên kết từ bạn trả lời. –
cảm ơn, bắt tốt! hy vọng phản hồi được cập nhật của tôi rõ ràng hơn và chính xác hơn một chút :) –
hmm, nên có nhiều bệnh nhân hơn tôi đoán :-) – rekna
hehe, đừng lo lắng :) –