Ale jedna klasa może też być w kilku plikach. Na dodatek plik wcale nie musi się nazywać tak, jak klasa w nim znajdująca. Więc nie pisz, że coś robisz w jakimś pliku, bo nie ma to żadnej wartości i tylko utrudnia dyskusję.
Kod źródłowy składa się z klas, program w trakcie działania z obiektów. Nie wiem, jak można tego nie rozumieć.
Na podstawie Twoich dotychczasowych filozofii udało mi się wywróżyć, że w backgroundworkerze uruchamiasz metodę z innej KLASY, która nie ma dostępu do elementów GUI, bo jest w innym wątku. Aby to rozwiązać można np. przekazać obiekt formatki do innej klasy aby tam uzyskać dostęp do jej metod:
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace ProgressBarTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Calculation calc = new Calculation(this);
calc.Start();
}
public delegate void KonsolaDelegate(string text);
public void Konsola(string text)
{
if (InvokeRequired)
{
BeginInvoke(new KonsolaDelegate(Konsola), new object[] { text });
return;
}
listBox1.Items.Add(text);
}
}
class Calculation
{
Form1 form;
public Calculation(Form1 form)
{
this.form = form;
}
public void Start()
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(10);
this.form.Konsola(i.ToString());
}
}
}
}
P.S. Można to do Newbie przenieść? Chwilami czuję się jak nauczyciel w szkole specjalnej :/