2013-06-07 34 views
5

tôi đã xác định một giao diện trong F #Cách xác định giao diện async f # có thể được triển khai trong C#?

type IConnect = 
    abstract Update: seq<DataType> -> Async<bool> 

Tôi muốn các ứng dụng khác trong appdomain cùng để thực hiện nó vì vậy mà tôi có thể gọi Cập nhật trên bất kỳ mà thực hiện giao diện (tôi thu thập các hiện thực trong một container TinyIoC) . Kiểu trả về Async<bool> có thể cho biết bản cập nhật có thành công hay không mà không phải đợi. Và tôi có thể cập nhật ứng dụng song song.

Các ứng dụng khác được viết bằng C# và khi tôi bắt đầu viết tham chiếu (giả lập), tôi nhận ra rằng điều này sẽ yêu cầu bất kỳ người triển khai nào sử dụng loại FSharpAsync vốn không đẹp lắm.

Vì vậy, làm cách nào để xác định giao diện để dễ dàng triển khai trong C# và giữ các khía cạnh không đồng bộ?

Trả lời

3

Sử dụng Task hoặc có lẽ IObservable. Bạn có thể chuyển đổi giữa các luồng công việc asyncTask<T>quiteeasily và đây là một loại đơn giản để hoạt động với ngôn ngữ C# hoặc nhiều nhất .Net.

type IConnect = abstract Update: seq<DataType> -> Task<bool> 
+0

Cảm ơn bạn, 'Async.AwaitTask: Task <'a>'> Async <'a> 'dường như hoạt động tốt – Remko

Các vấn đề liên quan