Ich stehe gerade auf dem Schlauch...
Ich versuche aus einem Task heraus eine Variable (string) die sich ausserhalb des Tasks befindet mit Informationen zu befüllen.
Nur habe ich jetzt das Problem das diese Variable erst garnicht befüllt wird.
Mein Code:
Spoiler anzeigen
Weiß jemand wie man dieses Problem lösen könnte?
// LÖSUNG //
Ich versuche aus einem Task heraus eine Variable (string) die sich ausserhalb des Tasks befindet mit Informationen zu befüllen.
Nur habe ich jetzt das Problem das diese Variable erst garnicht befüllt wird.
Mein Code:
C#-Quellcode
- string deployEffect = "";
- string error = "";
- Task task = Task.Run(() => {
- Dispatcher.BeginInvoke(new Action(() => {
- List<int> allValues = new List<int>();
- for (int i = 0; i < effects.Count; i++) {
- int value = int.Parse(effects[i].ValuePercentLabel.Text.Replace('%', '\0'));
- Console.WriteLine(value.ToString()); // DEBUG
- if (value != 0) {
- allValues.Add(value);
- }
- }
- Console.WriteLine("Count: {0}", allValues.Count.ToString()); // DEBUG
- if (allValues.Count != 0) {
- double maxValue = allValues.Max();
- for (int e = 0; e < effects.Count; e++) {
- int labelValue = int.Parse(effects[e].ValuePercentLabel.Text.Replace('%', '\0'));
- if (labelValue == maxValue) {
- deployEffect = effects[e].EffectName; // Fill 'deployEffect' variable
- break;
- }
- }
- }
- else {
- error = "There were no votes on any given effects."; // Fill 'error' variable
- }
- EffectContainer.Children.Clear();
- effects.Clear();
- usersVoted.Clear();
- totalVotes = 0;
- TotalVotesLabel.Text = "Total votes: 0";
- }));
- });
- Task.WaitAll(task);
- if (error == "") {
- if (deployEffect != "") {
- pipe.Write(string.Format("deploy:effect:{0}", deployEffect));
- }
- else {
- pipe.Write("error:whileDeployingEffect:deployEffect was empty. This should never be the case."); // Immer wird diese Zeile wird ausgeführt was nicht stimmt.
- }
- }
- else {
- pipe.Write(string.Format("error:noVotesOnAnyEffect:{0}", error)); // Eigentlich sollte diese hier ausgeführt werden was bedeutet das 'error' leer ist.
- }
Weiß jemand wie man dieses Problem lösen könnte?
// LÖSUNG //
Dispatcher.BeginInvoke
durch Dispatcher.Invoke
ersetzen.Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button
Für VB.NET Entwickler: Option Strict On nicht vergessen!
Für VB.NET Entwickler: Option Strict On nicht vergessen!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ClonkAndre“ ()