2012-01-23 46 views
5

Tôi đang cố gắng viết ứng dụng Silverlight bằng cách sử dụng mẫu await/async '(sử dụng SL5 và VS11), nhưng tôi không thể chọn' Tạo hoạt động dựa trên tác vụ 'trong cấu hình dịch vụ , điều này được cho là có thể (chưa)? Không thể tìm thấy nhiều chi tiết trên web (cụ thể cho SL) ...Dịch vụ dữ liệu dựa trên nhiệm vụ trong Silverlight

+0

Tôi có thể repro tình huống của bạn: toàn bộ phần "Khách hàng" của hộp thoại Cài đặt tham chiếu dịch vụ bị tắt cho các dự án SL. Bạn có thể muốn mở một vấn đề Microsoft Connect chỉ để đưa nó lên trước khi VS11 được phát hành. –

+0

Cảm ơn Stephen, vì vậy tôi không cần phải quản trị bản thân mình cho một bệnh viện tâm thần cho điều này :) –

+0

Tôi đã thêm một vấn đề MS Connect cho điều này, không có hoạt động nào được nêu ra: https://connect.microsoft.com/VisualStudio/ feedback/details/722368/await-async-pattern-in-sl5 –

Trả lời

0

Tôi đã có thể tạo proxy dịch vụ không đồng bộ theo cách thủ công trong Silverlight 5 và Visual Studio 2010.
Hoạt động như sự quyến rũ.
Cá nhân tôi thích mã hóa hợp đồng và proxy dịch vụ theo cách thủ công, nhưng nếu bạn muốn sử dụng tham chiếu Generate Service, bạn có thể xem this post - WCF + Tasks.

+0

Làm thế nào điều này liên quan đến chức năng await/async được đưa vào VS11? (hoặc Async CTP cho vấn đề đó?) –

+1

Theo tôi biết bạn có thể sử dụng cú pháp async/await với bất kỳ phương thức nào trả về Task hoặc Task . – ViktorZ

+1

@ViktorZ hoặc Void –

0

Tôi nghĩ rằng nó không được hỗ trợ trong Silverlight nhưng bạn có thể tự làm điều đó, Có thể thư viện lớp di động sẽ là một giải pháp khác cho việc này.

public class MyCServiceProxy 
{ 
    public static Task<ObservableCollection<MyC>> GetMyCs() 
    { 
     var tcs = new TaskCompletionSource<ObservableCollection<MyC>>(); 

     var client = new MyCServiceClient(); 

     client.GetMyCsCompleted += (s,e) => {}; 

     client.GetMyCsAsync(); 

     return tcs.Task; 
    } 
} 
Các vấn đề liên quan