2016-03-19 23 views
1

So überprüfen Sie, ob das Wetter que1 bereits ausgeführt wird, wenn der Funktionsblock dispatch_async zu lange dauert.So überprüfen Sie, ob das erstellte Wetter bereits erstellt wurde

-(void)downloadImageFromURL:(NSString*)_imageURl 
{ 

dispatch_queue_t que1 = dispatch_queue_create("abcd", NULL) 
dispatch_async(que1, ^{ 

    @autoreleasepool { 
     NSData *imagedata=[NSData dataWithContentsOfURL: 
          [NSURL URLWithString:_imageURl]]; 


     image = [UIImage imageWithData:imagedata]; 
     if (image) 
     { 
      [imagedata writeToFile:imagePath atomically:YES]; 
     } 

    } 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     NSLog(@"DONE");    
    }); 

}); 
} 

Ex: Wenn ich will, rufen downloadImageFromURL: Methode zweimal mit derselben URL zweimal ausgeführt wird ... wie 2. Mal die Ausführung zu stoppen .... helfen plz

+0

, was die Verwendung von 'dispatch_async (dispatch_get_main_queue()^{ NSLog (@ "DONE"); });' hier –

+0

Hier gibt es nun eine solche Verwendung ist aber, wann immer getan aktuelle Aufgabe, Sie Rückruf erhalten in dieser Methode und danach können Sie auf Haupt-Thread mit ausgeführter Aufgabe arbeiten. – Rajneesh

Antwort

0

Dispatch-Warteschlangen nicht habe diese Fähigkeit. Sie können NSOperationQueue mit NSOperation verwenden, um Hintergrundaufgaben durchzuführen. Es gibt eine cancel Methode, mit der Sie aktive Anfragen abbrechen können oder cancelAllRequests, um alle aktiven Anfragen abzubrechen. Es gibt viele Tutorials über sie im Internet.

Verwandte Themen