Tôi đang sử dụng thư viện cung cấp các phương thức kết thúc bằng ...Async
và trả lại Task
. Tôi sẽ sử dụng chúng trong ứng dụng dòng lệnh . Vì vậy, tôi cần phải gọi cho họ một cách đồng bộ rất nhiều.Đợi công việc không đồng bộ mà không bao gồm ngoại lệ trong AggregateException
C# tất nhiên không cho phép gọi các phương thức này theo phương thức Main
vì bạn không thể sử dụng phương thức async
trên phương thức Main
. Giả sử đây là nhiệm vụ:
var task = datastore.Save(data);
tôi tìm thấy một số giải pháp như:
Tasks.WaitAll(task);
task.Wait();
tuy nhiên tất cả những trường hợp ngoại lệ bọc ném vào AggregateException
, Tôi không muốn điều đó. Tôi chỉ muốn nói task.Result
và tôi mong đợi ngoại lệ ban đầu sẽ được ném.
Khi tôi sử dụng phương thức trả lại Task<TResult>
, task.Result
ném AggregateException
mặc dù không có nhiệm vụ tiếp tục được đặt. Tại sao sự rung động này?
Tôi cũng đã cố gắng,
task.RunSynchronously();
nó mang lại cho lỗi:
RunSynchronously may not be called on a task not bound to a delegate, such as the task returned from an asynchronous method.
vì vậy tôi đoán đó là không cho các phương pháp đánh dấu là async
.
Bất kỳ ý tưởng nào về mẫu sử dụng thư viện được thiết kế cho ứng dụng không đồng bộ trong ứng dụng bảng điều khiển không có ngữ cảnh không đồng bộ?