| 

.NET C# Java Javascript Exception

1
Hallo,

wahrscheinlich bin ich nicht in der Lage, Meister Google das richtige Ergebnis herauszukitzeln... ;-)

Aber die Frage interessiert vielleicht doch den Einen oder Anderen. Um Abfragen auf der Datenbank durchzuführen und die GUI am Leben zu erhalten, habe ich bislang immer folgendes Konstrukt genutzt (die Connection und das SQL-Kommando lasse ich unter den Tisch fallen):

Dim com As New MySqlCommand
Dim result As IAsyncResult = com.BeginExecuteNonQuery()
While result.IsCompleted = False
Application.DoEvents()
Thread.Sleep(100)
End While
com.EndExecuteNonQuery(result)

Ich habe hier den aktuellen .Net Treiber für MySQL (6.8.3). Da gibt es jetzt z. B. die Methode com.ExecuteNonQueryAsync(). Da ich nur VB.Net 2010 zur Verfügung habe, frage ich mich, wie ich die asynchrone Methode am Besten implementiere. Im Moment bin ich gedanklich bei dieser Version:

com.ExecuteNonQueryAsync()
While com.ExecuteNonQueryAsync.Status = TaskStatus.Running
Application.DoEvents()
Thread.Sleep(100)
End While

Und jetzt die Frage: liege ich da total daneben?
Wenn nein, welchen Vorteil bringt mir die Async-Methode (außer eine Quelltext-Verkürzung)?
Wenn ja, wie schaut es besser aus?
21.01.2014
muffi 1,4k 1 9
2 Antworten
1
Wie Floyd schon sagte ist die Methode wohl für das neue async / await von .NET 4.5 gedacht. Bei der Verwendung dieser Schlüsselwörter generiert der Compiler den Code, um die Methode asynchron auszuführen. Hierbei bedient er sich meines Wissens der Task Parallel Library. Deshalb führt dein Code wohl auch nicht zu Fehlern.

Microsoft hat für Visual Studio 2010 eine Async CTP herausgebracht, die auch heute noch zum Download bereitsteht. Die CTP ist explizit für den produktiven Betrieb freigegeben.
22.01.2014
luedi 1,9k 1 9
Kannte ich noch nicht, +1.
muffi 22.01.2014
0
await com.ExecuteNonQueryAsync();

oder

int result = await com.ExecuteNonQueryAsync();

await
21.01.2014
Floyd 14,6k 3 9
Floyd 14,6k 3 9
Das versteht der Compiler vom VB2010(EE) nicht, vielleicht hätte ich das nicht nur im Titel schreiben sollen... bleibt mir also im Moment wohl nichts anderes übrig als die von mir erstgenannte Variante einzusetzen. Die zweite Variante scheint aber auch zu funktionieren.
muffi 22.01.2014

Stelle deine .net-Frage jetzt!