Re: Нужна помощь с доп. потоком, вернее с синхронизацией
От: ZloeBablo Германия  
Дата: 14.10.13 07:11
Оценка:
В вашем простейшем случае лучше сделать вот так:
Завести два поля:

Thread workingTask;
bool threadIsCanceled;


Запуская делать вот так:
workingTask = new Thread(UpdateTextInALoop);
workingTask.Start();
threadIsCanceled = false;


В функции которая выполняется в другом потоке:


private void UpdateTextInALoop()
        {
            try
            {
                int i = 0;
                while (i < 1000)
                {
                    SetTextSafe(i.ToString(CultureInfo.InvariantCulture));

                    i++;
                    Thread.Sleep(100);

                    ThowIfCanceled();
                }
            }
            catch (Exception ex)
            {
                //canceled
            }
        }

private void ThowIfCanceled()
        {            
            if (threadIsCanceled)
                throw new Exception();
        }


и чтобы остановить воток просто:

if (workingTask != null)
{
threadIsCanceled = true;
workingTask.Join();
workingTask = null;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.