gpt4 book ai didi

c# - 使用 c# 从 Azure 存储帐户表检索记录,同时使用 xamarin 开发跨平台应用程序给出错误

转载 作者:行者123 更新时间:2023-12-03 04:18:19 26 4
gpt4 key购买 nike

使用 c# 从 Azure 存储帐户表检索记录,同时使用 xamarin 开发跨平台应用程序,出现错误。

await tbl.ExecuteAsync(retrieveOperation);

I AM FOLLOWING THIS LINK !

当 ILogin() 单独执行时,即不通过 Logmein() 执行时,此代码给出异常(时间等待和使用 storageException 的异步错误)。

当我使用当前形式的代码运行 Logmein() 时,没有任何反应,即没有发生异常错误。

当我使用task.Wait();时发生与等待相关的异常/错误。我将尝试提供异常详细信息。

我的代码在这里

    private void Logmein()
{

var task = Task.Run(async () => { await Ilogin(); });// Nothing happens by this code
//task.Wait(); It gives error/Exception.}
private static async Task Ilogin()
{

// Rest of the code is right (TESTED)
Microsoft.WindowsAzure.Storage.Table.CloudTable table = tableClient.GetTableReference("user");

Entry uname = new Entry();
Entry pword = new Entry();
Label linfo = new Label();
string userid = uname.Text.ToString();
string passcode = pword.Text.ToString();
Reg signuser = new Reg(userid);
TableOperation retrieveOperation = TableOperation.Retrieve<Reg>("regform", userid);
TableResult retrievedResult = await tbl.ExecuteAsync(retrieveOperation); //This AWAIT is making trouble
Reg loginuser = (Reg)retrievedResult.Result;
string u1 = loginuser.username.ToString();
string p1 = loginuser.password.ToString();

if (u1 == userid && p1 == passcode)
{
linfo.Text = "Login Successful";
//await Navigation.PushAsync(new MainPage());
}
else
{
linfo.Text = "Invalid Username or Password";
}
}

// here is my exception handling code

catch (Exception ex)
{
linfo.Text = "login Login Error" + ex.Message + ex.StackTrace + ex.HelpLink + ex.Source;
}

提前致谢。

最佳答案

要么一直异步,要么一直同步。尽量避免将两者混合。

Task Ilogin() 是异步方法,而 void Logmein() 则不是

应该将其设为异步然后等待

private async Task Logmein() {
await Ilogin();
}

Task.Run 不需要使用即发即忘方法,因为它们的异常无法被捕获。另外,混合阻塞调用(例如 Task.Wait()Task.Result)可能会导致死锁。

如果需要调用 Logmein() ,请尝试将其放入事件处理程序中,这将允许 async void 以便可以等待它。

private async void SomeHandler(object sender, EventArgs args) {
await Logmein();
}

如果是这种情况,您可以避免 Logmein() 并直接等待 Ilogin()

引用Async/Await - Best Practices in Asynchronous Programming

关于c# - 使用 c# 从 Azure 存储帐户表检索记录,同时使用 xamarin 开发跨平台应用程序给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com