欢迎光临
我们一直在努力

程序员在WorkItemTrackingHttpClient上调用QueryByIdAsync时获取访问已处置的对象异常 – c#

程序员面试经验

我正在尝试从TFS检索项目以执行更改的自动文档编制,并填充尽可能多的信息,以减少为我们的客户编写文档(如发行说明和内容)所花费的时间。

我使用以下方法来检索作为类的一部分的项目,它们都包含在主体中:

方法:

public IEnumerable<DTO.WorkItem> GetWorkItemsFromQuery(string queryId) {     using (WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>())     {         var queryResults =             witClient             .QueryByIdAsync(teamProjectName, new Guid(queryId))             .Result;          if (queryResults != null)         {             return queryResults                 .WorkItems                 .Select(item =>                 {                     var workitem = witClient.GetWorkItemAsync(item.Id).Result;                     workitem.Fields.TryGetValue("DescriptionField", out object descriptionObject);                     workitem.Fields.TryGetValue("TitleField", out object titleObject);                      return new DTO.WorkItem()                     {                         Id = item.Id.ToString(),                         Title = titleObject?.ToString() ?? string.Empty,                         Description = descriptionObject?.ToString() ?? string.Empty                     };                 }).ToList();             }             return default(IEnumerable<DTO.WorkItem>);         }     } } 

类:

public class VSTSIssueTrackerExplorer {     VssConnection connection;     private readonly string teamProjectName;      public VSTSIssueTrackerExplorer(string tfsDefaultCollectionPath,         string personalAccessToken,         string teamProjectName)     {         connection =             new VssConnection(                 new Uri(tfsDefaultCollectionPath),                 new VssBasicCredential(string.Empty, personalAccessToken));         this.teamProjectName = teamProjectName;     }      public IEnumerable<DTO.WorkItem> GetWorkItemsFromQuery(string queryId)     {         using (WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>())         {             var queryResults =                 witClient                 .QueryByIdAsync(teamProjectName, new Guid(queryId))                 .Result;              if (queryResults != null)             {                 return queryResults                     .WorkItems                     .Select(item =>                     {                         var workitem = witClient.GetWorkItemAsync(item.Id).Result;                         workitem.Fields.TryGetValue("DescriptionField", out object descriptionObject);                         workitem.Fields.TryGetValue("TitleField", out object titleObject);                          return new DTO.WorkItem()                         {                             Id = item.Id.ToString(),                             Title = titleObject?.ToString() ?? string.Empty,                             Description = descriptionObject?.ToString() ?? string.Empty                         };                     }).ToList();             }             return default(IEnumerable<DTO.WorkItem>);         }     } } 

第一次调用GetWorkItemsFromQuery时,一切运行正常,并按预期方式检索项目,并通过选择将其转换为类WorkItem,如下所示:

public class WorkItem {     public string Id { get; set; }     public string Title { get; set; }     public string Description { get; set; } } 

一次检索完项目后,如果尝试再次检索它们,则会收到以下异常:System.AggregateException("Cannot Access Disposed Object")

如果删除了using块,则可以根据需要多次调用它,因此完全没有问题。

我想知道的是WorkItemTrackingHttpClient是设计为在处理VssConection本身时处理的,还是在我不再需要它时可以处理的,我在网上进行了搜索,但似乎找不到任何相关的内容这个事情。

如果不使用using块内的WorkItemTrackingHttpClient,有人可以向我阐明一下可能是内存泄漏吗?

参考方案

看来这是设计使然。调试代码时,您可以看到第二次检索工作项时,WorkItemTrackingHttpClient缓存在对象m_cachedTypes中,因此您将获得异常“无法访问已处理的对象”。

TFS API获取工作项数据 – c#

我陷入了TFS API的简单问题,在获取工作项时,我无法获取工作项工作量数据,其想法是通过特定标准从TFS获取工作项,然后更改工作量数据并将其保存回TFS。现在,我可以获取工作项,并可以按字段更新任何数据,但是我发现了如何进行努力并进行更新。查询从TFS获取数据:SELECT * FROM WorkItems WHERE [System.WorkItemTy…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? – java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分[email protected]("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 – java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 – python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription…", "comment": ""} test.json{"name&#034…

Json到php,json_decode返回NULL – php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…

赞(0)
未经允许不得转载: 京大飞辅助网程序员面试-区块链javago面经 » 程序员在WorkItemTrackingHttpClient上调用QueryByIdAsync时获取访问已处置的对象异常 – c#

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址