Доступ к компонентам из любого потока!


Основная структура:
public void Название функции(параметры,если необходимо передать)
{
    try
    {
        if (this.InvokeRequired)
            BeginInvoke(new MethodInvoker(delegate
            {
                Имя компонента или функция в другом потоке
            }));
        else
            Имя компонента или функция в другом потоке
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
Пример:
public void MaxProgressBar(int i)
{
    try
    {
        if (this.InvokeRequired)
            BeginInvoke(new MethodInvoker(delegate
            {
                repositoryItemProgressBar1.Maximum = i;
            }));
        else
            repositoryItemProgressBar1.Maximum = i;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
В примере при обращении к компоненту из другого потока вызывается метод BeginInvoke, в нашем случае у repositoryItemProgressBar1 выставляется максимальное значение i указанное при вызове функции MaxProgressBar(int i).

Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!