Ich habe einen Web-Service-Proxy mit der Funktion "Web-Referenz hinzufügen" von VS 2008 (c #) erstellt.
Die generierte Klasse wird von SoapHttpClientProtocol
Kann ich nur eine Instanz meines Proxy in einem Singleton speichern? Ist es threadsicher? Gibt es einen Status zwischen Anrufen, der mich daran hindern würde, dies zu tun?
Nein. Es ist nicht threadsicher. Der Client muss sich im Status "Offen" befinden, um Anrufe zu ermöglichen. Ein einfaches Szenario, in dem ein Thread client.Close () ausführt, während ein anderer versucht, eine Methode aufzurufen, schlägt fehl.
MSDN sagt, dass SoapHttpClientProtocol ist threadsicher:
Threadsicherheit
Dieser Typ ist threadsicher.
Für eine andere Klasse wie System.Windows .Forms , die nicht Thread-sicher sind, sagt MSDN,
Threadsicherheit
Alle öffentlichen statischen Member (Shared in Visual Basic) dieses Typs sind fadensicher. Es ist nicht garantiert, dass alle Instanzmitglieder Thread sind sicher.
Hier ist ein Microsoft / MSDN-Mitarbeiter sagt (ohne Gewähr), dass es Thread-sicher ist:
Hallo Max,
Für den Webservice-Proxy sollte es meiner Meinung nach threadsicher sein wie .NET generierte Proxy-Klasse wird vom "SoapHttpClientProtocol" abgeleitet Klasse, die im Dokument als Thread-sicher markiert ist:
SoapHttpClientProtocol-Klasse
Daher sollte es sicher sein, es so lange im Multithread-Kontext zu verwenden Da Sie manuell kein kontextsensitives Element in der hinzufügen abgeleitete Proxy-Klasse. Denkst du das?
Mit freundlichen Grüßen
Steven Cheng
Microsoft MSDN Online-Supportleiter
Dieser Beitrag wird "WIE BESEHEN" ohne Gewährleistungen zur Verfügung gestellt Rechte.
Pro diesen Link: Ссылка
an der Unterseite unter "Thread-Sicherheit" heißt es, dass dieser Typ Thread-sicher ist. Ich weiß jedoch nicht, dass die Verwendung als Singleton Thread sicher ist.
MSDN erwähnt nicht , dass es Thread-sicher ist:
Threadsicherheit
Dieser Typ ist threadsicher.
Die Klasse ist sicher, keine Erwähnung des Objekts.
Aber es ist sicher zu sagen, dass es nicht threadsicher ist - kein Objekt in der .NET-Bibliothek ist Thread-sicher.
(Wenigstens habe ich noch nie einen gesehen)
Tags und Links c# thread-safety proxy asmx web-services