Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从异步任务中检索int值_Vb.net_Asynchronous_Task - Fatal编程技术网

Vb.net 从异步任务中检索int值

Vb.net 从异步任务中检索int值,vb.net,asynchronous,task,Vb.net,Asynchronous,Task,我在一个单独的项目中有一个异步任务,我需要从另一个项目调用它,但我不知道如何完成它 异步方法是 public async Task<int> InsertNewPasswordResetRequest(UserPasswordReset upr) { string commandText = "Insert Into passwordresetrequests (reset_username, ResetToken, ResetRequestTime, R

我在一个单独的项目中有一个异步任务,我需要从另一个项目调用它,但我不知道如何完成它

异步方法是

 public async Task<int> InsertNewPasswordResetRequest(UserPasswordReset upr)
    {

        string commandText = "Insert Into passwordresetrequests (reset_username, ResetToken, ResetRequestTime, ResetRequestTimeout) values(@username,@rt,@rrt,@rrtout);";
        var parameters = new Dictionary<string, object>() {
          { "@username", upr.ResetUsername },
          { "@rt", upr.ResetToken },
          { "@rrt", upr.ResetRequestTime },
          { "@rrtout", upr.ResetRequestTimeout }
        };

        return await Task.FromResult( _database.Execute(commandText, parameters, false));

    }

我知道它会返回一个任务,但是如何从中提取int值呢?

如果要异步运行任务,可以等待任务的完成

Dim success As Integer = Await prr.InsertNewPasswordResetRequest(upr)
或以同步方式运行任务

Dim success As Integer = prr.InsertNewPasswordResetRequest(upr).Result

如果希望异步运行任务,则可以等待任务完成

Dim success As Integer = Await prr.InsertNewPasswordResetRequest(upr)
或以同步方式运行任务

Dim success As Integer = prr.InsertNewPasswordResetRequest(upr).Result
建议的方法是等待InsertNewPasswordResetRequest方法的结果。还可以对返回的任务调用Result属性,但如果在同步上下文中执行,则可能会导致代码阻塞

int result=wait InsertNewPasswordResetRequest

另一个注意事项:不需要在该方法中等待Task.FromResult。只需从方法签名和wait关键字中删除异步修饰符,然后直接返回Task.FromResult

另一个注意事项:如果可能的话,考虑不必执行任何异步代码,就要完整地插入NeXPaseWordReStestRealEnter非Acyc。 编辑VB.NET调用代码:

Dim result As Integer=Wait InsertNewPasswordResetRequest…

建议的方法是等待InsertNewPasswordResetRequest方法的结果。还可以对返回的任务调用Result属性,但如果在同步上下文中执行,则可能会导致代码阻塞

int result=wait InsertNewPasswordResetRequest

另一个注意事项:不需要在该方法中等待Task.FromResult。只需从方法签名和wait关键字中删除异步修饰符,然后直接返回Task.FromResult

另一个注意事项:如果可能的话,考虑不必执行任何异步代码,就要完整地插入NeXPaseWordReStestRealEnter非Acyc。 编辑VB.NET调用代码:


Dim result As Integer=Wait InsertNewPasswordResetRequest…

我想他想要VB.NET中的答案,尽管他没有标记。啊,对不起。问题被标记为C,所以。。。我会更新我的答案。我想他想要VB.NET中的答案,尽管他没有标记。啊,对不起。问题被标记为C,所以。。。我将更新我的答案。您正在调用的函数不异步运行:您正在调用的函数不异步运行:谢谢,我知道它不起作用的原因是我必须使父函数异步。Result属性不只是异步执行代码。调用Result属性可能导致代码阻塞。关于这个主题,这里有一篇很棒的帖子:@NathanAldenSr你可以稍微专注一点,读一下短语,或者同步执行任务。哎呀,我有个打字错误。我的意思是,结果并不是简单地同步执行代码。所以我不想编辑原始评论:@NathanAldenSr哎呀,我也打错了。我没有删除“复制/粘贴后等待”。谢谢,我知道它不起作用的原因是我必须使父函数异步。Result属性不只是异步执行代码。调用Result属性可能导致代码阻塞。关于这个主题,这里有一篇很棒的帖子:@NathanAldenSr你可以稍微专注一点,读一下短语,或者同步执行任务。哎呀,我有个打字错误。我的意思是,结果并不是简单地同步执行代码。所以我不想编辑原始评论:@NathanAldenSr哎呀,我也打错了。复制/粘贴后我尚未删除等待。