从main访问void中的变量

时间:2014-12-25 09:11:22

标签: c# .net multithreading function

我的Form1_Load:

private void Form1_Load(object sender, EventArgs e)
{
    Thread Usern = new Thread(new ThreadStart(Username));
    Usern.Start();
}

我的用户名功能:

public static void Username()
{
    try
    {
        string user = Environment.UserName;
        MessageBox.Show(user.ToString());
    }
    catch(Exception exc)
    { 
        MessageBox.Show(exc.Tostring()); 
    }
}

任何人都知道如何打电话给#34;用户"用在上面的函数^里面的Form_Load事件?我已经尝试将函数返回类型更改为字符串,但它表示它是无效的更改。 我知道我可以将函数中的代码复制并粘贴到form_load事件中,但它必须在函数中。

先谢谢你们,对不起这样一个愚蠢的问题"因为我没有在SO上找到任何与我有关的问题。

1 个答案:

答案 0 :(得分:0)

你应该让user成为实例变量而不是局部变量 - 换句话说,在你的类中声明它:

private string user;

然后在Username()(应该重命名为DetectUserName或类似的东西),你只需要:

user = Environment.UserName;

您的方法应该是一个实例方法,因此它与类的实例相关联 - 从方法声明中删除static关键字。

虽然不是很清楚为什么你想在另一个线程中这样做...