Tôi đang cố gắng để gọi một phương pháp async trên một đối tượng Net thuyết minh trong Powershell:Bắt quả của Net phản đối phương pháp không đồng bộ trong PowerShell
Add-Type -Path 'my.dll'
$myobj = new-object mynamespace.MyObj()
$res = $myobj.MyAsyncMethod("arg").Result
Write-Host "Result : " $res
Khi thực hiện kịch bản, vỏ không có vẻ chờ MyAsyncMethod().Result
và không hiển thị gì, mặc dù kiểm tra giá trị trả lại cho biết đó là loại chính xác (Task<T>
). Nhiều nỗ lực khác, chẳng hạn như biến trung gian, Wait()
, v.v. không cho kết quả nào.
Hầu hết nội dung tôi tìm thấy trên web là gọi không đồng bộ một tập lệnh Powershell từ C#. Tôi muốn ngược lại, nhưng không ai có vẻ muốn làm điều đó. Điều đó thậm chí có thể và nếu không, tại sao?
Thật kỳ lạ. Điều gì sẽ xảy ra nếu bạn gọi 'myobj.MyAsyncMethod' theo cách tương tự nhưng từ ứng dụng giao diện điều khiển C#? – Noseratio
Hoạt động trên máy của tôi. Bạn có chắc là bạn tạo thành công cá thể của mình không? Bởi vì dấu ngoặc đơn là không cần thiết. – i3arnon
Bất cứ khi nào bạn sử dụng Add-Type, hãy đảm bảo tập lệnh chạy trong quy trình AppDomain/Powershell hoàn toàn mới. Không thể bốc dỡ các cụm lắp ráp. – Eris