|
Microsoft .Net-Samples
|
Static Public Member Functions | |
| static async Task< string > | _TaskRun_Start001 () |
| Asynchrone Start-Methode: | |
| static async Task< string > | _TaskFactoryStartNew_Start002 () |
| Task.Factory.StartNew =>. | |
| static async Task< string > | _TaskFactoryStartNew_Start003 (string _MessageText001, string _MessageText002) |
| Ist grundsätzlich nichts anderes als Variante-001. Nur anstelle von Task.Run eben Task.Factory.StartNew. | |
| static async Task< string > | _TaskFactoryStartNewMethode003_001 (string _MessageText001) |
| static async Task< string > | _TaskFactoryStartNewMethode003_002 (string _MessageText002) |
| Lambda mit Wait 10000. | |
| static async Task< string > | _Sample004AsyncCall (string _Message) |
| static async Task< ModelGPIOPinProperty > | _CreateClassInstanceFromStream001 () |
| Standard-Version. | |
| static async Task< ModelGPIOPinProperty > | _CreateClassInstanceFromStream002 () |
Static Private Member Functions | |
| static async Task< string > | _TaskRunMethode001_001 () |
| Task.Run => Ausführen einer Methode. | |
| static async Task< string > | _TaskRunMethode001_002 () |
| Task.Run => Ausführen Lambda-Ausdruck Beim Lambda-Ausdruck befindet sich der ausführbare Code im Body des Task.Run. | |
| static async Task< string > | _TaskFactoryStartNewMethode002_001 () |
| Task.Factory.StartNew Ist eigentlich analog Task.Run, was der genaue unterschied ist, müsste ich zuerst nachlesen. | |
| static async Task< string > | _TaskFactoryStartNewMethode002_002 () |
| static Task< bool > | _TaskFactoryStartNewMethode002_002_Process (out string _OutputMessage, string _BenutzerName) |
| static string | _SampleTask_002_WaitMethode () |
| static string | _SampleTask_002_WaitMethode (ref bool _Check) |
| static Task< string > | _SampleTask_002_WaitMethode_Awaitable () |
| static Task< string > | _SampleTask_002_WaitMethode_Awaitable (ref bool _Check) |
| static string | _TaskFactoryStartNewMethode003_001_Methode (string _MessageText001) |
| static async Task< T > | _ReadRequestBody< T > (T _ClassInstance, Stream _RequestBodyStream) |
| Primary Stream-Reader und Convert (generic) to Class-Instance (Type). | |
| static string | _WaitMethode () |
| local Wait-Methode (ca. Line 367) | |
| Problematik Task.Run() vs Task.Factory.StartNew() | In .NET 4 war Task.Factory.StartNew die primäre Methode zum Planen einer neuen Aufgabe. Viele Überladungen ermöglichten einen hochgradig konfigurierbaren Mechanismus, der das Festlegen von Optionen, das Übergeben beliebiger Zustände, das Aktivieren von Abbrüchen und sogar das Steuern von Planungsverhalten ermöglichte. Die Kehrseite all dieser Leistungsfähigkeit ist die Komplexität. Sie müssen wissen, wann Sie welche Überladung verwenden, welchen Planer Sie bereitstellen usw. Und „Task.Factory.StartNew“ geht nicht gerade leicht über die Lippen, zumindest nicht schnell genug für etwas, das in so primären Szenarien wie dem einfachen Auslagern von Arbeit auf Hintergrundverarbeitungsthreads verwendet wird. |
Daher haben wir (Microsoft) in der .NET Framework 4.5 Developer Preview die neue Methode Task.Run eingeführt. Dies ersetzt Task.Factory.StartNew keineswegs, sondern ist vielmehr als schnelle Möglichkeit zu betrachten, Task.Factory.StartNew zu verwenden, ohne eine Reihe von Parametern angeben zu müssen. Es ist eine Abkürzung. Tatsächlich wird Task.Run in derselben Logik implementiert, die für Task.Factory.StartNew verwendet wird, nur dass einige Standardparameter übergeben werden. Wenn Sie eine Aktion an Task.Run übergeben:
|
static |
Standard-Version.
|
static |
Lambdaausdruck (Code in Klammern {}) als AWAIT: Dann muss der eigentliche Lamdbaausdruck ASYNC sein!
|
staticprivate |
Primary Stream-Reader und Convert (generic) to Class-Instance (Type).
| T |
| _ClassInstance | |
| _RequestBodyStream |
|
static |
| _Message |
|
staticprivate |
|
staticprivate |
| _Check |
|
staticprivate |
|
staticprivate |
| _Check |
|
static |
Task.Factory.StartNew =>.
async void => geht nicht! Kann nicht auf void (nichts) warten. Macht eigentlich sinn!
public static async void _RunAsync002()
Call local WaitMethode()
|
static |
Ist grundsätzlich nichts anderes als Variante-001. Nur anstelle von Task.Run eben Task.Factory.StartNew.
https://learn.microsoft.com/de-de/dotnet/api/system.threading.tasks.task.run?view=net-7.0 Verwendung eines Lambdaausdruck um Code zu definieren, welcher ausgehführt werden soll. https://learn.microsoft.com/de-de/dotnet/csharp/language-reference/operators/lambda-expressions https://coders-corner.net/2013/01/09/crashkurs-lambda-expressions/
|
staticprivate |
Task.Factory.StartNew Ist eigentlich analog Task.Run, was der genaue unterschied ist, müsste ich zuerst nachlesen.
https://learn.microsoft.com/de-de/dotnet/api/system.threading.tasks.task.run?view=net-7.0
Ausführen einer Methode
|
staticprivate |
Feler: CS4010 Option-H / -I CS4010 Async Lambdaausdruck kann nicht in Delegattyp Func<string> konvertiert werden. Async Lambdaausdruck gibt möglicherweise void, Task oder Task<T> zurück. Diese können nicht in Func<string> konvertiert werden. (fho.frm.net.Microsoft_DotNetSamples)
A
B Keine Lambda-Methode, also kein Code
C
D Methode in Lambda-Ausderuck ist awaitable!
E
F
G
H: Das Problem gelöst ohne Lambda-Methode
I: Das Problem gelöst mit Lambda-Methode
J: Implementierung als FUNCTION
x:
LAST-VERSION:Z
Return
|
staticprivate |
| _OutputMessage | |
| _BenutzerName |
|
static |
| _MessageText001 |
|
staticprivate |
|
static |
Lambda mit Wait 10000.
| _MessageText002 |
|
static |
Asynchrone Start-Methode:
|
staticprivate |
Task.Run => Ausführen einer Methode.
|
staticprivate |
Task.Run => Ausführen Lambda-Ausdruck Beim Lambda-Ausdruck befindet sich der ausführbare Code im Body des Task.Run.
|
staticprivate |
local Wait-Methode (ca. Line 367)