|
Microsoft .Net-Samples
|
Sample-Class für ASYNC und SYNC. More...
Static Public Member Functions | |
| static string | _CallAsyncMethodeWithoutAwait () |
| tsAClassSampleSynchAsyncCall001_Click (HTTP-Request) Asynchrone Methode in Task gekapselt und ohne async und await | |
| static async Task< string > | _CallAsyncMethode () |
| tsAClassSampleSynchAsyncCall002_Click (HTTP-Request) Asynchrone Methode mit async und await | |
| static async Task< List< string > > | _CallAsyncMethodeStreamReaderAv1000 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption01 Dialog bleibt frei (mit Thread-Sleep()) | |
| static List< string > | _CallSyncMethodeStreamReaderAv1001 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption01 Dialog blockiert (mit Thread-Sleep()). Durch die Struktur muss das Resultat mit der Eigenschaft .Result ausgewertet werden. Daherm warten bis Programm beendet. | |
| static async Task< List< string > > | _CallAsyncMethodeStreamReaderB (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption02 Dialog bleibt offen | |
| static async Task< List< string > > | _CallAsyncMethodeSleepA (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption03 | |
| static async Task< List< string > > | _CallAsyncMethodeSleepB (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption04 | |
| static async Task< List< string > > | _CallAsyncMethodeSleepC (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption05.Checked | |
| static async Task< string > | _GetInformationAsync001_01 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption06.Checked (001) | |
| static async Task< string > | _GetInformationAsync001_02 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption06.Checked (002) | |
| static async ValueTask< string > | _GetInformationAsync001_03 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption06.Checked (003) | |
| static async IAsyncEnumerable< List< string > > | _GetInformationAsync002 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Async_Click::cbOption07.Checked | |
| static async Task | _DisplayCurrentInfoAsyncIntern () |
| TASK https://learn.microsoft.com/de-de/dotnet/csharp/asynchronous-programming/async-return-types. | |
| static async Task | _DisplayCurrentInfoAsyncExtern () |
| static string | _ExecuteAxisTaskMain (List< string > _ParameterStringList) |
| static string | _ExecuteAxisTaskMainFactory (List< string > _ParameterStringList) |
| static string | _ExecuteAxisTaskV1000 (string _StepperProcessingParameter) |
| static List< string > | _CallAsyncMethodeStreamReader_Synch_Option02 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Synch_Click::cbOption02.Checked Einfach eine Verpackung der StreamReader-ASYNC Methode in einer Task-Methode die ohne async und await in der Signatur auskommt. | |
| static async Task< List< string > > | _CallAsyncMethodeStreamReader_Synch_Option03 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Synch_Click::cbOption03.Checked Einfach eine Verpackung der StreamReader-ASYNC Methode in einer Task-Methode die ohne async und await in der Signatur auskommt. | |
| static Task< List< string > > | _CallAsyncMethodeStreamReader_Synch_Option04 (string _FileName) |
| tsAClassSampleSynchAsyncCall003Synch_Click::cbOption04.Checked Einfach nur eine Methode (SYNC) mit Task | |
Static Private Member Functions | |
| static async Task | WaitAndApologizeAsync () |
Static Private Attributes | |
| static List< Task< string > > | _TaskListAxis = new List<Task<string>>() |
|
static |
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption03
| _FileName |
Warnhinweis dass await-Operator fehlt Dialog bleibt frei
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption04
| _FileName |
Warnhinweis dass await-Operator fehlt Dialog ist blockiert
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption05.Checked
| _FileName |
Keine Warnungen!!! Dialog bleibt frei
Verwendung ohne async
braucht zwingend async in der Delegaten-Signatur
|
static |
tsAClassSampleSynchAsyncCall003Synch_Click::cbOption02.Checked Einfach eine Verpackung der StreamReader-ASYNC Methode in einer Task-Methode die ohne async und await in der Signatur auskommt.
| _FileName |
Eigentlich Analog: tsAClassSampleSynchAsyncCall003Async_Click::Option-1
Das ist die Task-Definition mit async für den darin enthaltenen Lambda-Ausdruck (Code)
Achtung: Diese Task-Definition muss manuell zur Ausführung gebracht werden mit => .Result;
|
static |
tsAClassSampleSynchAsyncCall003Synch_Click::cbOption03.Checked Einfach eine Verpackung der StreamReader-ASYNC Methode in einer Task-Methode die ohne async und await in der Signatur auskommt.
| _FileName |
Eigentlich Analog: tsAClassSampleSynchAsyncCall003Async_Click::Option-1
|
static |
tsAClassSampleSynchAsyncCall003Synch_Click::cbOption04.Checked Einfach nur eine Methode (SYNC) mit Task
| _FileName |
Eigentlich Analog: tsAClassSampleSynchAsyncCall003Async_Click::Option-1
Variante-1: Mit dieser Implementierung ist der Dialog nicht blockiert, also ASYNC. Es braucht also ein Task.Run implementierung für einen ASYNC-Vorgang
Variante-2: Mit dieser Implementierung ist der Dialog blockiert, also SYNC. Es braucht also ein Task.Run implementierung für einen ASYNC-Vorgang
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption01 Dialog bleibt frei (mit Thread-Sleep())
| _FileName |
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption02 Dialog bleibt offen
| _FileName |
Basis-Methode ist ASYNC und awaitable
|
static |
tsAClassSampleSynchAsyncCall001_Click (HTTP-Request) Asynchrone Methode in Task gekapselt und ohne async und await
Ziel war es eine ASYNC-Methode (HTTP-Request) aus einer normalen Methode ohne ASYNC (und await) in der Signatur auszuführen. Der entscheidende Teil der Methode _TaskCallMethode wird ohne AWAIT einfach nur SYNCH ausgeführt, muss mit Task.Result auf die Ausführung und Beendidung gewartet werden
Das ist der entscheidende Punkt: .RESULT (muss ausgeführt werden!!)
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption01 Dialog blockiert (mit Thread-Sleep()). Durch die Struktur muss das Resultat mit der Eigenschaft .Result ausgewertet werden. Daherm warten bis Programm beendet.
| _FileName |
In Basis-Methode ist die .Result (Eigenschaft) aktiv => also SYNC und warten auf Ende. Diese Methode ist nicht awaitable, daher Ausführung mit .Result! Keine ASYNC Ausaführung, und das Dialog ist blockiert.
|
static |
|
static |
|
static |
| _ParameterStringList |
Die Grundidee ist, dass ich eine List-Instance mit Namen der Axis und den Parametern an eine Methode zur Ausfhührung übergeben kann. Das Ganze wird als await Task.Run() initiert, und ausgeführt.
Das Thema Task.Factory.StartNew() muss ich aber noch genauer ansehen, resp. warum?? Macht grundsätzlich keinen direkten Unterschied. Gemäss einer anderen Web-Page wird davon gesprochen, Task.Factory.StartNew() nicht wirklich THREADSAVE ist.
https://devblogs.microsoft.com/dotnet/task-run-vs-task-factory-startnew/ https://docs.devexpress.com/CodeRushForRoslyn/400357/static-code-analysis/analyzers-library/crr0041-use-task-run-instead-of-task-factory-start-new
Erstellen Task-Liste mit allen Processen zur Ausführung: die TaskViewDialoge aus der HelperTaskViewStringReturn-Class werden verwendet
Kein ASYNC. dieser Methode => AWAIT kann nicht auf VOID warten!
|
static |
| _ParameterStringList |
Erstellen Task-Liste mit allen Processen zur Ausführung: die TaskViewDialoge aus der HelperTaskViewStringReturn-Class werden verwendet
Kein ASYNC. dieser Methode => AWAIT kann nicht auf VOID warten!
|
static |
| _StepperProcessingParameter |
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption06.Checked (001)
| _FileName |
Design-Muster für AWAITABLE Dialog bleibt frei
Thread.Sleep() ohne await => da Task-Methode in sich nicht async!
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption06.Checked (002)
| _FileName |
Design-Muster für AWAITABLE, Dialog bleibt frei
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption06.Checked (003)
| _FileName |
Der Hauptunterschied zwischen Task und ValueTask liegt in ihrer Speicherzuweisung und ihren Nutzungsmustern. ValueTask ist eine Struktur, wird auf dem Stapel zugewiesen und erfordert in den meisten Fällen keine Heap-Zuweisung. Darunter enthält ValueTask entweder: Eine Task, wenn eine Methode ValueTask zurückgibt, aber intern normale Tasks verwendet Design-Muster für AWAITABLE, Dialog bleibt frei
|
static |
tsAClassSampleSynchAsyncCall003Async_Click::cbOption07.Checked
| _FileName |
IAsyncEnumerable https://learn.microsoft.com/de-de/dotnet/csharp/asynchronous-programming/async-return-types
|
staticprivate |
|
staticprivate |