Ich habe mehrzeilige Textbox, die ich den Wert für jede Zeile (sowie Index-Wert) mit;Foreach Line in Textfeld im Hintergrundarbeiter C# WPF
public void doProcess()
{
if (!string.IsNullOrEmpty(Convert.ToString(deliverynumbers.Text)))
{
string _deliverynumbers = deliverynumbers.Text;
string[] delimiter = {Environment.NewLine};
string[] array_deliverynumbers = _deliverynumbers.Split(delimiter, StringSplitOptions.None);
int count = array_deliverynumbers.Length;
int current = 0;
foreach (string text in array_deliverynumbers)
{
if (!string.IsNullOrEmpty(Convert.ToString(text)))
{
current++;
Double Total_Percentage = count;
Double Current_Percentage = current;
Double progressAmount = (Current_Percentage/Total_Percentage * 100);
//backgroundWorker.ReportProgress(Convert.ToInt32(progressAmount));
//could use this to update progress bar
//progress.Value = progressAmount;
//Do some other processes like for each line, create a file and name it to the value of the line value...
}
}
}
}
Allerdings, wenn ich die doProgress versuchen() innerhalb eines DoWork Anruf I „erhalten eine erste Chance Ausnahme des Typs 'System.InvalidOperationException' ... unten ist die DoWork Code;
private void DoWork(object sender, DoWorkEventArgs e)
{
//This works
for (int i = 0; i <= 100; i++)
{
Thread.Sleep(100);
backgroundWorker.ReportProgress(i);
}
//But this causes the exception
doProgress();
}
I haben auch verschiedene Teile des doProgress() Code entfernt, um zu sehen, was es tut, aber keiner funktioniert ...
EDIT
auch wenn (! String.IsNullOrEmpty (Convert.ToString (deliverynumbers.Text))) {} bricht es ..
private void DoWork(object sender, DoWorkEventArgs e)
{
if (!string.IsNullOrEmpty(Convert.ToString(deliverynumbers.Text)))
{
}
}
Direkter Zugriff auf UI-Steuerelemente vom Arbeitsthread erzeugt eine 'System.InvalidOperationException', Sie müssen auf Steuerelemente zugreifen, die einen Delegaten verwenden, oder Sie können Ihren textBox.Text als Argument an backgroundWorker oder thread übergeben. – raidensan
Danke für die Idee Kumpel! +1 – BENN1TH