Ich habe gelesen über das Erstellen einer Fortsetzung für mehrere Vorgänger in MSDN https://msdn.microsoft.com/en-us/library/ee372288(v=vs.110).aspx und habe eine harte Zeit, den Code zu verstehen, eines ihrer Beispiele verwendet. Ich füge den folgenden Code ein.TaskFactory.StartNew <TResult> Methode (Func <Objekt, TResult>, Objekt)
for (int ctr = 1; ctr <= 10; ctr++) {
int baseValue = ctr;
tasks.Add(Task.Factory.StartNew((b) =>
{
int i = (int) b;
return i * i;
},
baseValue));
}
Wenn ich über StartNew
Überlastung zu lesen, die MSDN states:
public Task<TResult> StartNew<TResult>(
Func<object, TResult> function,
object state
)
Parameter
Funktion
Typ: System.Func<Object, TResult>
Ein Funktionsdelegat, der das zukünftige Ergebnis zurückgibt, um über die Task<TResult>
verfügbar zu sein.
Zustand
Typ: System.Object
Ein Objektdaten enthält, durch die Funktion delegieren verwendet werden.
Um genau zu sein, in ihrem Beispiel verstehe ich nicht die Verwendung von baseValue
, wenn b
als Object
an die Funktion übergeben wird.
'baseValue' ist ein Zustandsobjekt, das an den Delegaten übergeben wird, der für' StartNew' bereitgestellt wird. Im Beispiel nimmt 'baseValue' den Wert von' ctr' an, während die Schleife ausgeführt wird. [Auf einem anderen Hinweis bleiben Sie weg von 'StartNew'] (https://blog.stephencleary.com/2013/08/startnew-is-dangerous.html) – JSteward
Wofür ist b? –
b ist der Parameter, der an die lamda übergeben wird, es entspricht in etwa "void SomeFunc (int b)". – JSteward