Hteo sam da napishem app koja cje da koristi BackgroundWorker i ponadao se da cje to da bude lakshe nego pisati multithread program.Program radi ono shto treba, nemam problema sa greshkama tipa
Sve radi kako treba ali program se ponasha kao da nije multithread i ako u pozadini navodno radi BackgroundWorker.

Evo ga kod pa vidite ako shta nije u redu i gde greshim.Da pojasnim josh jednom, sve shto hocju je da kada recimo procesuira dug tekst da mogu program nesmetano da pomeram i da klikcjem dugmicje, shto u ovom gore kodu ne mogu
Pomagajte
Citat:
Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.
Sve radi kako treba ali program se ponasha kao da nije multithread i ako u pozadini navodno radi BackgroundWorker.

Code:
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
button1.Text = "Code Text";
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
button1.Text = "DeCode Text";
}
delegate void DoIt();
public void Work()
{
if (!richTextBox1.InvokeRequired)
{
Form1.ActiveForm.Text += " Working please wait ...";
string str = richTextBox1.Text;
richTextBox1.Text = "";
CharEnumerator enu = str.GetEnumerator();
while (enu.MoveNext())
{
if (radioButton1.Checked)
{
int c = (int)enu.Current + 13;
richTextBox1.Text += String.Concat(Convert.ToChar(c));
richTextBox1.Refresh();
//richTextBox1.ScrollToCaret();
}
else if (radioButton2.Checked)
{
int c = (int)enu.Current - 13;
richTextBox1.Text += String.Concat(Convert.ToChar(c));
richTextBox1.Refresh();
//richTextBox1.ScrollToCaret();
}
}
}
else
{
Invoke(new DoIt(Work));
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Work();
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Form1.ActiveForm.Text = "Enc13";
MessageBox.Show("Work completed !", "Enc13");
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
button1.Text = "Code Text";
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
button1.Text = "DeCode Text";
}
delegate void DoIt();
public void Work()
{
if (!richTextBox1.InvokeRequired)
{
Form1.ActiveForm.Text += " Working please wait ...";
string str = richTextBox1.Text;
richTextBox1.Text = "";
CharEnumerator enu = str.GetEnumerator();
while (enu.MoveNext())
{
if (radioButton1.Checked)
{
int c = (int)enu.Current + 13;
richTextBox1.Text += String.Concat(Convert.ToChar(c));
richTextBox1.Refresh();
//richTextBox1.ScrollToCaret();
}
else if (radioButton2.Checked)
{
int c = (int)enu.Current - 13;
richTextBox1.Text += String.Concat(Convert.ToChar(c));
richTextBox1.Refresh();
//richTextBox1.ScrollToCaret();
}
}
}
else
{
Invoke(new DoIt(Work));
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Work();
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Form1.ActiveForm.Text = "Enc13";
MessageBox.Show("Work completed !", "Enc13");
}
Evo ga kod pa vidite ako shta nije u redu i gde greshim.Da pojasnim josh jednom, sve shto hocju je da kada recimo procesuira dug tekst da mogu program nesmetano da pomeram i da klikcjem dugmicje, shto u ovom gore kodu ne mogu
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;