Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
C# 如何使我的方法返回一个字符串值,但仍然是一个异步方法?_C#_Asp.net Core - Fatal编程技术网

C# 如何使我的方法返回一个字符串值,但仍然是一个异步方法?

C# 如何使我的方法返回一个字符串值,但仍然是一个异步方法?,c#,asp.net-core,C#,Asp.net Core,我有以下返回此错误的方法: Error CS1983 The return type of an async method must be void, Task, Task<T>, a task-like type, IAsyncEnumerable<T>, or IAsyncEnumerator<T> 方法如下: private async String SaveAIguess(IFormFile file) { var picture =

我有以下返回此错误的方法:

Error   CS1983  The return type of an async method must be void, Task, Task<T>, a task-like type, IAsyncEnumerable<T>, or IAsyncEnumerator<T>
方法如下:

private async String SaveAIguess(IFormFile file)
{
    var picture = GetFile(file.FileName);
    await StorageService.Save(picture, file.OpenReadStream());

    var resourceUrl = Path.GetFullPath(file.FileName);
    return resourceUrl;
}
有没有一种方法可以使它异步并且仍然能够返回resourceUrl

谢谢

使其返回任务

wait
基本上“打开”了
任务
,并为您提供
字符串

是:

private async Task<String> SaveAIguess(IFormFile file)
private async Task SaveAIguess(格式化文件)

异步方法必须返回
任务
任务
无效
。如果您将返回类型更改为
Task
,它应该可以按需要工作。当然,任何调用异步方法的方法也必须是异步的,或者必须像调用
SaveAIguess(dat).Result那样调用它,使其同步

所以您的最终代码将如下所示

private async Task SaveAIguess(格式化文件)
{
var picture=GetFile(file.FileName);
等待StorageService.Save(picture,file.OpenReadStream());
var resourceUrl=Path.GetFullPath(file.FileName);
返回resourceUrl;
}
在另一个异步方法中可以这样调用:

var str=wait SaveAIguess(dat);
或者用同步的方法

var str=SaveAIGuess(dat)。结果
private async Task<string> SaveAIguess(IFormFile file)
{
    var picture = GetFile(file.FileName);
    await StorageService.Save(picture, file.OpenReadStream());

    var resourceUrl = Path.GetFullPath(file.FileName);
    return resourceUrl;
}
var val = await SaveAIguess(file);
private async Task<String> SaveAIguess(IFormFile file)