0

我正在使用 zkemkeeper SDK 来处理考勤机,它工作正常,但是当我连接时,它会挂起表单 UI,所以我开始使用 Async Task 来避免这个问题,但它不起作用,这是我的代码:

public async Task<bool> Connect()
{
    await Task.Delay(5000);
    await Task.Run(() => ZkemClientObj.Connect_Net(ip, port));
}

在任务延迟中,UI 没有被阻止,但是当我启动 Connect_Net 时,它会阻止 UI。我尝试了很多东西,它工作正常,但只有这个片段。

更新

这是连接按钮事件方法:

CZKEM ZkemClientObj = new CZKEM();

private async void MachineConnectionAction(object sender, EventArgs e)
{
    var isConnected = await Connect();

    if (isConnected) 
    {
        UpdateConnectionStatus();
    } 
    else 
    {
        ShowErrorMessage();
    }

}

public async Task<bool> Connect()
{
     string ip = MachineIPAddress.Text.Trim();
     int port = int.Parse(MachinePort.Text.Trim());

     return await Task.Run(() => ZkemClientObj.Connect_Net(ip, port));
}

4

1 回答 1

0

试试这个https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskfactory.startnew?view=netframework-4.8

 public async Task Connect()
   {
        await Task.Delay(5000);
        Task.Factory.StartNew(() => ZkemClientObj.Connect_Net(ip, port));
   }
于 2019-12-12T09:32:18.940 回答