Новая тема для экземпляра класса (C #) - PullRequest
3 голосов
/ 30 августа 2010

У меня есть форма и несколько внешних классов (последовательный порт, доступ к файлам), которые создаются в форме.

1) Какой самый простой способ запустить экземпляр внешнего класса в его собственном потоке?

2) Поток экземпляра автоматически завершается при закрытии формы?

Ответы [ 3 ]

2 голосов
/ 30 августа 2010

1) Какой самый простой способ запустить экземпляр внешнего класса в его собственном потоке?

Экземпляры классов не "запускаются". Методы делают.

Таким образом, вы можете захотеть изучить шаблон APM и класс BackgroundWorker .

2) Поток экземпляра автоматически завершается при закрытии формы?

Это зависит от того, как были запущены потоки. Поток может быть фоновым потоком или потоком переднего плана - последний предотвращает завершение приложения.

1 голос
/ 30 августа 2010

Если это всего лишь несколько строк кода, которые вы хотите вызвать асинхронно, вероятно, лучший способ это ThreadPool.QueueUserWorkItem.См .: В чем разница между QueueUserWorkItem () и BeginInvoke () для выполнения асинхронных действий без типов возврата

0 голосов
/ 30 августа 2010

Посмотрите, работаете ли вы с управляемой средой, когда объект создается, он автоматически удаляется, если он находится вне области видимости.Об утилизации фактически заботится сбор мусора.

Если вы используете объекты UnManaged, вы обязаны закрыть ресурсы, прежде чем вывести объект из области видимости.

Сборщик мусора периодически включается и начинает собирать все объекты, находящиеся вне области видимости.Если вам нужно работать с большими объектами, вы можете попробовать использовать класс WeakReference, который будет содержать объект, но также будет предоставлять его для сборки мусора.

Читайте о WeakReference и сборке мусора здесь: http://www.abhisheksur.com/2010/07/garbage-collection-algorithm-with-use.html

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...