2012-03-06 30 views
15

Tôi thực sự gặp vấn đề khi tôi muốn dừng tất cả các yêu cầu hiện tại trong một công cụ đồng bộ được xây dựng với AFNetworking.AFNetworking + cancelAllRequests

Tôi có 5 URL khác nhau để truy vấn. Mỗi truy vấn được khởi chạy nếu trước đó được thực hiện đúng.

Điều này hoạt động rất tốt.

Tôi muốn ngừng quá trình đồng bộ hóa bất cứ lúc nào. Vì vậy, mã của tôi để làm điều đó là:

- (void)cancelAllRequests 
{ 
    NSLog(@"CancelAllRequests"); 

    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull"]; 
    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_items"]; 
    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_image"]; 
    [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"POST" path:@"ws/webapp/services/push_item"]; 
    [[[HTTPClient sharedClient] operationQueue] cancelAllOperations]; 
} 

Nhưng mã này dường như không làm gì cả. Khi tôi muốn hủy bỏ, tôi thấy tất cả các hoạt động lô làm việc trong nhật ký của tôi sau khi phương thức được gọi.

Tôi đã bỏ lỡ điều gì? Nếu tôi hủy các yêu cầu, điều này không ngăn tất cả các hoạt động đang hoạt động xây dựng với các yêu cầu này?

+0

HTTPClient? Liệu nó thuộc về AFNetworking? –

+2

Tôi nghĩ ý anh ấy là: AFHTTPClient * httpClient = [[AFHTTPClient alloc] initWithBaseURL: url]; [[httpClient operationQueue] cancelAllOperations]; – Flaviu

Trả lời

26

Bạn chỉ cần thực hiện [[[HTTPClient sharedClient] operationQueue] cancelAllOperations]. Các hoạt động khi chúng bị hủy cố gắng hoàn thành quá trình thực thi càng tốt, nhưng không đảm bảo chính xác cách điều đó xảy ra. Trong trường hợp hoạt động hàng loạt, nó có thể đã được hoàn thành vào thời điểm nó bị hủy bỏ vì tất cả các hoạt động yêu cầu phụ thuộc của nó đã kết thúc (bằng cách bị hủy bỏ).

+0

mattt, tôi có hoạt động 1 => nếu hoạt động ok 2 => nếu ok => hoạt động 3 => nếu ok => hàng đợi hoạt động với nhiều loại hoạt động tương tự. Đó là lý do tại sao tôi không thể biết chính xác khi nào người dùng ngừng hoạt động ... vì vậy nếu nó hoạt động 1 hoặc 2, tôi không có hàng đợi, đó là lý do tôi đặt [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod: @ "GET" path: @ " ws/webapp/services/pull "]; trước khi xóa hàng đợi. –

+0

Chương trình xe tăng có bộ chọn không được nhận dạng được gửi tới ví dụ. –

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