О параметрах потока (2.0), «возвращаемом значении» и приостановке потока.
1. Параметры резьбы:
Иногда вам нужно передать некоторую информацию во вспомогательный поток. Здесь вам нужно использовать
пример делегата ParameterizedThreadStart:
Private void btRunThread_Click(object sender, EventArgs e)
{
Thread
t = new Thread(new ParameterizedThreadStart(this.ThreadRun));
(100
}
Private void ThreadRun(object o)
{
this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); })
;
2. Подобные функции можно примерно реализовать с помощью прокси. Пример:
class Program
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod)
Thread = new Thread(new ThreadStart(tc. ThreadRun ));
Console.WriteLine("Запуск второго потока");
thread.Start(
);
Thread.WriteLine
("Второй поток завершен")
;
Private static void DlgMethod(int i)
{
Console.WriteLine("Результат второго потока: {0}", i }
}
);
публичный делегат void MyDlg(int i);
класс ThreadClass
{
частный MyDlg myDlg;
общественный ThreadClass (MyDlg pDlg)
{
this.myDlg = pDlg
}
;
public void ThreadRun ()
{
int total = 0;
for (int i = 0; i <100; i++)
{
total += i
;
если (myDlg != null)
{
myDlg(всего)
}
}
}
3. Приостановка потоков:
(1) Метод .join
Примечания MSDN: Продолжая выполнять стандартную обработку сообщений COM и SendMessage, вызывающий поток блокируется до тех пор, пока поток не завершится.
Я был в замешательстве и попробовал сам. Кажется, что после того, как поток вызывает метод соединения, поток занимает все время процессора, пока задача потока не будет завершена. Не знаю, так ли это?
(2) Метод прерывания
немедленно завершает поток
(3). Пример определения идентификатора
:
class Program
{
Private static bool stop;
static void Main(string[] args)
{
stop = false;
Поток т = новый поток (новый ThreadStart (ThreadRun));
t.Start ();
Thread.Sleep (100);
стоп = true;
Консоль.Читать()
;
static void ThreadRun()
{
while(
!stop)
{
Console.WriteLine("Сделай немного работы..."
)
;
http://www.cnblogs.com/KissKnife/archive/2006/10/03/520463.html