Verwendung von Visual Studio erzeugten asynchronen WCF-Aufrufe?
Meine OperationContract
:
public List<MessageDTO> GetMessages()
{
List<MessageDTO> messages = new List<MessageDTO>();
foreach (Message m in _context.Messages.ToList())
{
messages.Add(new MessageDTO()
{
MessageID = m.MessageID,
Content = m.Content,
Date = m.Date,
HasAttachments = m.HasAttachments,
MailingListID = (int)m.MailingListID,
SenderID = (int)m.SenderID,
Subject = m.Subject
});
}
return messages;
}
In der Service-Referenz-Konfiguration habe ich überprüft, die option "Generate asynchronous operations". Wie nutze ich den erzeugten GetMessagesAsync()
? Im Netz fand ich Beispiele verwenden, die AsyncCallback
aber ich bin nicht vertraut mit dieser. Gibt es eine Möglichkeit zu nutzen, es in eine freundliche Art und Weise, wie async
und await
keywords .NET 4.5? Wenn nicht, was muss ich tun, um die Methode aufzurufen asynchron?
InformationsquelleAutor pmichna | 2012-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Option 'Generieren asynchrounous Operationen", erhalten Sie das 'alte' Verhalten, wo Sie haben, um Rückrufe verwendet.
Wenn Sie möchten, verwenden Sie die neuen async - /await-syntax, müssen Sie wählen Sie "Generate task-based operations" (ist standardmäßig ausgewählt).
Bei Verwendung des Standard-Wcf-template, generiert die folgende proxy-code:
Wie Sie sehen können, gibt es keine Rückrufe. Statt einer
Task<T>
zurückgegeben.Kann man diesen proxy in der folgenden Weise:
Markieren Sie die aufrufende Methode mit
async
und verwenden Sie dannawait
beim aufrufen der service-Methode.können Sie post, die als eine separate Frage? Das wird den Menschen ermöglichen, Sie zu beantworten.
InformationsquelleAutor Wouter de Kort
Ihre Service-Referenz (wenn Sie eine verwenden .Net 4.5) gesetzt werden, zu generieren, die task-basierte asynchrone Aufrufe. (Einstellungen für Service-Referenz > die überprüfung Gestatten generation asynchroner operations - > wählen Sie " Generate task-based operations), Diese können verwendet werden, wie jede
async
Methode. Hier ist ein Beispiel, wie es zu benutzen:Wenn Ihr client ist nicht mit .Net 4.5, können Sie die Generierung von service-Referenzen, verwenden
async
. Du musst es tun, auf die altmodische Weise, Rückrufe verwenden. Hier ist ein Beispiel:Beachten Sie, dass in den tatsächlichen code für die beiden Szenarien, sollten Sie nicht verwenden
using
oderIDisposable.Dispose()
zu reinigen den client, siehe Vermeidung von Problemen mit der Using-Anweisung und dieser code, um Ihnen den Einstieg in die verwirrende Welt der Schließung dieser Dinge.InformationsquelleAutor Tim S.
Wenn Sie auf VS2012, dann können Sie die
*Async
Anrufe wie dieser:InformationsquelleAutor Stephen Cleary
Wie wäre es mit etwas wie dieses...
}
InformationsquelleAutor The Unculled Badger