powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ThreadTimer
10 сообщений из 10, страница 1 из 1
ThreadTimer
    #38338872
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таймере с определённой периодичностью дёргается метод.

Вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
_tExchange = new ThreadTimer(GetCheckTime2, null, 100000, 120000);


        private static void GetCheckTime2(object state)
        {
            if (!busyFlag)
            {
                busyFlag = true;
                _tExchange.Change(Timeout.Infinite, Timeout.Infinite);
                ExtSysInfoExchange.ExchangeCD();  //Обмен контрагентами и документами
                _tExchange.Change(150000, 120000);
                busyFlag = false;
            }
        }



В отладчике вижу несколько потоков.
Подскажите, как задать имя у потока, созданного таймером, чтобы понимать, какие потоки в каком количестве кем создаются.
...
Рейтинг: 0 / 0
ThreadTimer
    #38338876
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorThreadTimer
Это еще что за зверь?

defragmentatorПодскажите, как задать имя у потока
http://msdn.microsoft.com/ru-ru/library/system.threading.thread.name.aspx
...
Рейтинг: 0 / 0
ThreadTimer
    #38338879
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУdefragmentatorThreadTimer
Это еще что за зверь?

defragmentatorПодскажите, как задать имя у потока
http://msdn.microsoft.com/ru-ru/library/system.threading.thread.name.aspx

Сорри, это просто производный класс от Timer.

Я так понимаю, что если буду обращаться к текущему потоку в вызываемом методе, то смогу его поименовать?
...
Рейтинг: 0 / 0
ThreadTimer
    #38338934
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorЯ так понимаю, что если буду обращаться к текущему потоку в вызываемом методе, то смогу его поименовать?
На основе чего было сделано такое предположение? Я об этом писал?
...
Рейтинг: 0 / 0
ThreadTimer
    #38338967
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorЯ так понимаю, что если буду обращаться к текущему потоку в вызываемом методе, то смогу его поименовать?
Правильно понимаешь. Только это можно сделать только один раз. При повторном назначении имени будет сгенерировано InvalidOperationException. В документации по Thread.Name вот такой пример приведен:
Код: c#
1.
2.
3.
4.
if (Thread.CurrentThread.Name == null)
{
    Thread.CurrentThread.Name = "MainThread";
}


Я бы написал extension метод чтобы скрыть эти детали:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public static class ThreadExtensions
{
	public static bool TrySetName(this Thread thread, string threadName)
	{
		try
		{
			if (!String.IsNullOrEmpty(threadName) && thread.Name == null)
			{
				thread.Name = threadName;
				return true;
			}
		}
		catch (InvalidOperationException)
		{
		}
		return false;
	}
}
...
Рейтинг: 0 / 0
ThreadTimer
    #38338983
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileПравильно понимаешь.
Возможно я поторопился. От какого именно таймера ты унаследовался? System.Windows.Forms.Timer или System.Timers.Timer? От System.Threading.Timer ты унаследоваться не мог т.к. он sealed. С другой стороны сигнатура конструктора очень похожа именно на него.
...
Рейтинг: 0 / 0
ThreadTimer
    #38339022
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazilebazileПравильно понимаешь.
Возможно я поторопился. От какого именно таймера ты унаследовался? System.Windows.Forms.Timer или System.Timers.Timer? От System.Threading.Timer ты унаследоваться не мог т.к. он sealed. С другой стороны сигнатура конструктора очень похожа именно на него.

Всё описано так:

Код: c#
1.
using ThreadTimer = System.Threading.Timer;



А метод отрабатывает нормально. Exception не происходит. Походу поток завершается просто по завершении метода.
...
Рейтинг: 0 / 0
ThreadTimer
    #38339223
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorВсё описано так:
Код: c#
1.
using ThreadTimer = System.Threading.Timer;


На будущее - это называется псевдоним класса, а не "производный класс от Timer". Производный это значит дочерний или унаследованный.

defragmentatorА метод отрабатывает нормально. Exception не происходит. Походу поток завершается просто по завершении метода.
Какой метод? Какой поток?
...
Рейтинг: 0 / 0
ThreadTimer
    #38339360
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileНа будущее - это называется псевдоним класса, а не "производный класс от Timer". Производный это значит дочерний или унаследованный.
Это не псевдоним класса, а псевдоним неймспейса. А по-человечески, просто namespace alias.
...
Рейтинг: 0 / 0
ThreadTimer
    #38339362
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbazileНа будущее - это называется псевдоним класса, а не "производный класс от Timer". Производный это значит дочерний или унаследованный.
Это не псевдоним класса, а псевдоним неймспейса. А по-человечески, просто namespace alias.
Сорри, поторопился.

Вот псевдоним неймспейса:

using abc = System.Threading;
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / ThreadTimer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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