C# 无法在函数调用之前更新标签

C# 无法在函数调用之前更新标签,c#,asp.net,C#,Asp.net,在调用另一个类中的函数之前,我需要更新一个简单的label控件,但标签仅在函数调用完成后更新。代码如下 lblCalling.Text = "Calling..."; bool res = pf_auth.pf_authenticate(pfAuthParams, out otp, out callStatus, out errorId); 不,我不这么认为。相反,在您的代码中,标签会按预期进行更新,但很可能以下方法需要很长时间,并且您正在STA(单线程)模式下运行,因此您的主UI线程是阻塞的

在调用另一个类中的函数之前,我需要更新一个简单的label控件,但标签仅在函数调用完成后更新。代码如下

lblCalling.Text = "Calling...";
bool res = pf_auth.pf_authenticate(pfAuthParams, out otp, out callStatus, out errorId);

不,我不这么认为。相反,在您的代码中,标签会按预期进行更新,但很可能以下方法需要很长时间,并且您正在STA(单线程)模式下运行,因此您的主UI线程是阻塞的;可能不允许您查看更新


在单独的线程中运行方法
pf\u auth.pf\u authenticate()
,可能不,我不这么认为。相反,在您的代码中,标签会按预期进行更新,但很可能以下方法需要很长时间,并且您正在STA(单线程)模式下运行,因此您的主UI线程是阻塞的;可能不允许您查看更新

在单独的线程中运行pf_auth.pf_authenticate()方法

public await void DoWork()
{
    await Task.Run(() =>
    {
        lblCalling.Text = "Calling...";
    });
    bool res = pf_auth.pf_authenticate(pfAuthParams, out otp, out callStatus, out errorId);
}
试试这个:

public await void DoWork()
{
    await Task.Run(() =>
    {
        lblCalling.Text = "Calling...";
    });
    bool res = pf_auth.pf_authenticate(pfAuthParams, out otp, out callStatus, out errorId);
}

试着用上面的例子去做,但是不起作用。试着用上面的例子去做,但是不起作用。我更新了我的答案,试试看。你有什么版本的Visual Studio?我更新了我的答案,试试看。你有什么版本的Visual Studio?亲爱的Adoyt你在使用Web表单吗?如果是这样,我只能假设您运行的代码在服务器上。因此,在服务器上的代码完成运行之前,标签不会更新。请记住,客户端(即web浏览)和服务器之间没有相互链接和独立运行。亲爱的Adoyt,您使用的是web表单吗?如果是这样,我只能假设您运行的代码在服务器上。因此,在服务器上的代码完成运行之前,标签不会更新。请记住,客户端(即web浏览)和服务器不是相互链接和独立运行的。