powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / BackgroundWorker
16 сообщений из 41, страница 2 из 2
BackgroundWorker
    #38054635
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,

почему не поможет - то ?
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054781
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

потому что поток должен в этом случае сам себя завершить.
А тут поток сделал запрос к Web-сервису и ждёт ответа (это одна команда, если кто-то не в курсе).
А ответа может и не быть...
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054873
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,

тогда вам лучше асинхронный веб реквест =) Ну или Task, Thread и тд. Найти ссылку на поток в BW я лично не смог
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054881
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

ссылка получается таким образом:
Код: c#
1.
LoadThread = Thread.CurrentThread;



в методе DoWork для фонового потока
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054888
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,

и в самом деле). Тогда в чем проблема? Thread.Abort и ловите исключение)
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054893
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan, и что ловить?
Зачем мне исключение?

Я ловлю так
Код: c#
1.
2.
3.
4.
5.
6.
7.
while (this.bgrWorker1.IsBusy)
            {
                Thread.Sleep(10);  // пусть немного поспит, но только до того, как фоновый поток возвратится.
                Application.DoEvents();
            }

            MessageBox.Show("Поток закрылся");


или это неправильно?
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054907
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,

в исполняющем методе
Код: c#
1.
2.
3.
4.
5.
 catch (ThreadAbortException e)
            {
                
              .....
            }


почитайте Thread.Abort()
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054939
sld
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sld
Гость
вроде только про BackgroundWorker разговор шёл.
нафига так делать.
...
Рейтинг: 0 / 0
BackgroundWorker
    #38054957
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sld,

ну я согласен.но ТС настаивает на таком решение. В конце концов почему бы нет, но тогда теряется смысл BW
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055024
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результат отрицательный. То есть прервать поток не удалось.
Только при выходе из программы после того, как были попытки прерывания удалось получить исключение:
"Поток находился в режиме прерывания".
А сам по себе поток так и не прервался.
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055101
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,

что-то не то делаете...
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055297
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

Попробовал проще, поставил в воркер фонового потока просто бесконечный цикл:
Код: c#
1.
2.
3.
4.
 while (true)
                {
                    j = 0;
                }


Он прерывается без проблем.
Обращение к веб-сервису не прерывается до полного выхода из программы.
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055303
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,

ну не верю. Приведите код. Thread.Abort - у пофиг что там выполняется.
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055783
sld
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sld
Гость
а к веб сервису как обращение идёт?
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055844
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, обрезал потестировать обращение к веб-сервису:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        // Работа в фоновом потоке
        private void bgrWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            string _xmlPhoto;
            LoadThread = Thread.CurrentThread;
            try
            {
                _xmlPhoto = www.GetXmlPersonalPhoto(@"e4220125-a48a-11db-841d-0014c240f634", @"e4220125-a48a-11db-841d-0014c240f634");

            }

            catch (ThreadAbortException eX)
            {
                MessageBox.Show("Thread - caught ThreadAbortException - resetting 2.");
                MessageBox.Show("Exception message:" + eX.Message.ToString());
            }

        }



Abort вызываю в основном потоке (см. на предыдущей странице метод button1_Click).
...
Рейтинг: 0 / 0
BackgroundWorker
    #38055850
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
www определяю при инициализации формы

Код: c#
1.
2.
3.
4.
5.
        private static ServiceReference1.WSEmployeeInfoPortTypeClient www;

            ....

        www = new ServiceReference1.WSEmployeeInfoPortTypeClient(endpointConfigurationName);
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / BackgroundWorker
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]