Допустим, я создал имя класса myClass, и у этого класса есть свойство myValue с любым типом, не имеет значения, например:
class myClass
{
public delegate void OverTheLimitDlg(int arg);
public event OverTheLimitDlg OverTheLimit;
public myClass()
{
myValue = 0;
}
private int myvalue = 0;
public int myValue
{
get { return myvalue;}
set
{
myValue = value;
if(value > 5)
OvertheLimit(value);
}
}
}
У меня есть метка winforms с именем myLabel в форме, и я создаю объект с типом myClass в событии Form Load, подписываюсь на его событие OverTheLimit и запускаю backgroundworker:
myClass myObj;
private void Form_Load(object sender, EventArgs e)
{
myObj = new myClass();
myObj.OverTheLimit += SubsMethod;
backgroundworker.RunWorkerAsync();
}
private void backgroundworker_DoWork(...)
{
myObj.myValue = 10;
//Some expressions.
}
private void SubsMethod(int someInt)
{
myLabel.Text = "Oh it's over the limit!";
}
Резюме: я создаю класс, для которого объект, экземпляр которого создан, может инициировать событие. Я заставляю объект запускать событие в потоке, и он запускает метод, который влияет на объект GUI, объект, созданный и выполняющийся в другом потоке. Я никогда не пробовал. Что произойдет в такой ситуации? Это вызывает ошибку? Спасибо.