获取调用线程

时间:2010-02-08 19:29:27

标签: c# winforms authentication multithreading

有没有办法从第二个线程获取主线程(应用程序线程)的信息?

我的问题是我必须在主线程中设置currentprincipal,但是身份验证是在另一个线程中完成的,因为这是一个漫长而复杂的任务,但是当我在第二个线程中设置currentPrincipal时,主线程不会有信息。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在模块上创建一个静态变量,两个线程都将在其中执行。在主线程中设置变量并在第2个中访问它。

答案 1 :(得分:0)

我写了一个测试方法ThreadJoinTest()。在main中运行它。

public static void ThreadJoinTest()
{
    // get current (calling) tread
    Thread current_thread = Thread.CurrentThread;

    // create a second thread
    Thread second_thread = new Thread(SecondThreadFunc);

    // pass calling thread to second thread
    second_thread.Start(current_thread);

    Console.WriteLine("Main thread: Sleep a bit...");
    Thread.Sleep(1000);
    Console.WriteLine("Main thread: Ended!");
}

// method executed in second thread
static void SecondThreadFunc(object t)
{
    Console.WriteLine("Now in 2. thread...");

    // wait calling thread to end
    ((Thread)t).Join();

    Console.WriteLine("In 2. thread: First thread ended");
    Console.WriteLine("In 2. thread: Press a key to exit!");
    Console.ReadKey();
}