在Xamarin中异步执行同步命令



我已经构建了一个Xamarin.Forms应用程序,它使用分层应用程序中的DLL来发送某种SQL命令(这不是SQL!(

问题是它只提供同步方法,而我的应用程序"没有响应"。如何在不挂起UI的情况下,创建一个异步方法来调用sycnronous方法并等待其结果?

我尝试了以下内容,但它似乎一直在等待,就像线程从未停止一样。

public async Task<ExecuteCommandResult> ExecuteMocaCommandAsync(String ps_command)
{
return await Task<ExecuteCommandResult>.Run(() =>
{
return ExecuteMocaCommand(ps_command);
}
);
}

我这样称呼它:

ExecuteCommandResult l_res = l_con.ExecuteMocaCommandAsync("list users where usr_id = '" + gs_UserName + "'").Result;

我显然错过了一些东西,希望你能给我指明一个好的方向。

谨致问候,Yoz

Task.Run看起来不错(不过您可以通过将Task<ExecuteCommandResult>.Run更改为仅Task.Run来简化它(。这是将阻塞工作推送到UI应用程序的后台线程的正确方法。

但是,您不能使用Result;这可能会陷入僵局。您需要使用await:调用您的方法

ExecuteCommandResult l_res = await l_con.ExecuteMocaCommandAsync("list users where usr_id = '" + gs_UserName + "'");

最新更新