Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналог GetTickCount(), а лучше GetThreadTimes() 
V
    Опции темы
_hunter
Дата 11.1.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



добрый день.

есть ли тут аналоги такой полезной функции как GetTickCount ( а лучше а лучше GetThreadTimes )?
и если есть -- как к ним добраться?

с уважением...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
stab
Дата 11.1.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



DateTime.Now.Ticks, только тики меньше, 10 000 в одной секунде и считаются они не со старта компьютера, а с 12:00:00 midnight, January 1, 0001.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
_hunter
Дата 11.1.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



ясно.
а с GetThreadTimes как дела обстоят?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
stab
Дата 11.1.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



похоже только через импорт... можешь еще в сторону WMI покопать smile


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
dronzo
Дата 11.1.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 26.11.2005
Где: Москва

Репутация: 6
Всего: 8



_hunter
У System.Diagnostics.ProcessThread есть св-ва StarTime, UserProcessorTime, TotalProcessorTime и PrivilegedProcessorTime.
PM MAIL   Вверх
_hunter
Дата 11.1.2006, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



толи я чего-то не понимаю, толи одно из двух...
пишу
TimeSpan begin = ProcessThread.TotalProcessorTime;
получаю сообщение о том, что TotalProcessorTime нужен объект.
но у ProcessThread нет конструкторов. поэтому получить его я не могу smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
stab
Дата 11.1.2006, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 22
Всего: 48



Поток(и) надо через Process.Threads получать.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
_hunter
Дата 11.1.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



а что мне потом с этим потоком делать?
+ разве через Thread.CurrentThread я не получу текущий поток?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.DUDA
Дата 11.1.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Thread и ProcessThread - это "две большие разницы " (с)

Первый служит для создания потока в тек. процессе и управления им (Suspend, Resume, Abort и пр.). Второй - для получения информации о существующем потоке произвольного процесса (поэтому и лежит в namespace System.Diagnostics). Вот пример, демонстрирующий всё это:

Код
using System;
using System.Threading;
using System.Diagnostics;

namespace ConsoleApplication5
{
    class Program
    {
        static void DumpThreads(string msg)
        {
            Console.WriteLine("=== " + msg);
            Console.WriteLine("=== Dumping threads of curr. process:");
            ProcessThreadCollection ptc = Process.GetCurrentProcess().Threads;
            foreach(ProcessThread pt in ptc)
                Console.WriteLine("Thread Id={0}, TotalProcessorTime={1}", pt.Id, pt.TotalProcessorTime);
            Console.WriteLine();
        }

        static void ThreadFunc()
        {
            while(true)
            {
            }
        }

        static void Main(string[] args)
        {
            DumpThreads("program started");

            Thread thr1 = new Thread(new ThreadStart(ThreadFunc));
            thr1.Start();

            Thread.Sleep(1000);
            DumpThreads("one thread working");

            Thread thr2 = new Thread(new ThreadStart(ThreadFunc));
            Thread thr3 = new Thread(new ThreadStart(ThreadFunc));
            thr2.Start();
            thr3.Start();

            Thread.Sleep(1000);
            DumpThreads("3 threads working");

            thr1.Abort();
            DumpThreads("2 threads working");

            thr2.Abort();
            thr3.Abort();
            DumpThreads("program stopping");
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
_hunter
Дата 12.1.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



Цитата(mr.DUDA @ 11.1.2006, 20:02 Найти цитируемый пост)

Thread и ProcessThread - это "две большие разницы " (с)

в этом то и проблема. мне нужно получить время выполнения текущего потока ( я его получаю через Thread.CurrentThread ), но как связать Thread и ProcessThread я не знаю -- ни одного общего свойства ( для идентификации ) я не нашел smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dronzo
Дата 12.1.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 26.11.2005
Где: Москва

Репутация: 6
Всего: 8



AppDomain.GetCurrentThreadId(). И сверять с cв-вом Id каждого экземпляра ProcessThread при переборе ProcessThreadCollection.

Это сообщение отредактировал(а) dronzo - 12.1.2006, 13:32
PM MAIL   Вверх
_hunter
Дата 12.1.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



Warning 'System.AppDomain.GetCurrentThreadId()' is obsolete: 'AppDomain.GetCurrentThreadId has been deprecated because it does not provide a stable Id when managed threads are running on fibers (aka lightweight threads). To get a stable identifier for a managed thread, use the ManagedThreadId property on Thread. http://go.microsoft.com/fwlink/?linkid=14202'


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dronzo
Дата 12.1.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 26.11.2005
Где: Москва

Репутация: 6
Всего: 8



Извини, я сам на 1.1 сижу пока и не знал о что эта функция уже как устаревшая помечена. C ManagedThreadId я помочь вряд ли смогу, но вот так, думаю, тоже можно smile
Код

 [DllImport("Kernel32.dll")]
 static extern int GetCurrentThreadId();


Это сообщение отредактировал(а) dronzo - 12.1.2006, 14:49
PM MAIL   Вверх
_hunter
Дата 12.1.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



я уже начинаю думать что проще GetThreadTimes() импортировать чем с классами заморачиваться...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.DUDA
Дата 12.1.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(_hunter @ 12.1.2006, 14:06 Найти цитируемый пост)
я уже начинаю думать что проще GetThreadTimes() импортировать чем с классами заморачиваться...

импортируй, только не забудь и структуру FILETIME тоже прихватить


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.