为了账号安全,请及时绑定邮箱和手机立即绑定

使用 await 和 async 返回字符串列表

使用 await 和 async 返回字符串列表

C#
九州编程 2021-06-03 14:42:26
我在组织租户 azure 环境中部署了一个 ASP.NET (4.5) 网站。它具有向/从网络位置(我们称之为 nas 驱动器)上传/下载/删除文件(任何类型)的功能,例如 \nas8782\xyz\abc\上传/下载/删除工作正常(见下面的代码)。我们使用由 Azure 团队创建的 CloudSdk.Azure 库。nasClient.UploadAsyncnasClient.DownloadAsyncnasClient.DeleteAsyncnasClient.ListFilesAsync文件服务.csusing CloudSdk.Azure;private string userId = ConfigurationManager.AppSettings["userId"].ToString();    private string userPassword = ConfigurationManager.AppSettings["userPassword"].ToString();    private string baseNasLocation = ConfigurationManager.AppSettings["baseNasLocation"].ToString();    string env = ConfigurationManager.AppSettings["env"].ToString().ToUpper();public async Task Upload(string fileName, string fileToSave, string projectID)    {        var nasClient = new NasClient(userId, userPassword);        var localFiles = new List<string>();        localFiles.Add(fileToSave);        await nasClient.UploadAsync(baseNasLocation + env + @"\" + projectID + @"\", localFiles);}public async Task Download(string fileToDownload, string projectID)    {        var nasClient = new NasClient(userId, userPassword);        Stream stream2 = nasClient.DownloadAsync(baseNasLocation + env + @"\" + projectID + @"\" + fileToDownload).Result;        var appPath2 = HostingEnvironment.MapPath("~\\TempUpload");        var localFullPath2 = string.Format("{0}\\{1}", appPath2, fileToDownload);        using (var fileStream2 = System.IO.File.Create(localFullPath2))        {            stream2.CopyTo(fileStream2);        }} public async Task Delete(string fileToDelete, string projectID)    {        var nasClient = new NasClient(userId, userPassword);        Task stream2 = nasClient.DeleteAsync(baseNasLocation + env + @"\" + projectID + @"\" + fileToDelete);}问题- 这个 CloudSdk.Azure 库有另一个函数调用 ListFilesAsync,它获取提供的路径中存在的所有文件的列表。我正在使用下面的代码来做同样的事情,但无法得到它。如果我调用这个 Fileservice 方法没有 async 和 await - 它运行但一直运行并且从不返回结果。
查看完整描述

2 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以使用 Task.Result 以同步方式获取 Task 的结果。

字符串结果 = Task.Result;

此外,您不应使用 JsonConvert.DeserializeObject 来创建任务。我不确定你想在那里做什么。您可以使用允许动态访问的 JObject。


查看完整回答
反对 回复 2021-06-05
  • 2 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信