如何从BackgroundWorker正确更新ListView?

问题描述

我有一个 at System.Net.HttpWebRequest.GetResponse() at System.Net.WebClient.GetWebResponse(WebRequest request) at System.Net.WebClient.DownloadBits(WebRequest request,Stream writeStream) at System.Net.WebClient.DownloadDataInternal(Uri address,WebRequest& request) at System.Net.WebClient.DownloadData(Uri address) at System.Net.WebClient.DownloadData(String address) at Mail.Pages.PrivacyModel.btn_SendMessage_Click() in C:\Projects\Reporting Connector\Connector\Mail\Pages\Privacy.cshtml.cs:line 149 at Mail.Pages.PrivacyModel.OnPostWork1() in C:\Projects\Reporting Connector\Connector\Mail\Pages\Privacy.cshtml.cs:line 42 at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.VoidHandlerMethod.Execute(Object receiver,Object[] arguments) at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeHandlerMethodAsync() at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeNextPageFilterasync() at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Rethrow(PageHandlerExecutedContext context) at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Next(State& next,Scope& scope,Object& state,Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeInnerFilterasync() at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker,Task lastTask,State next,Scope scope,Object state,Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next,Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() --- End of stack trace from prevIoUs location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker,Task task,Idisposable scope) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint,Task requestTask,ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)``` 控件,其中包含大约5000个项目。我正在使用ListView搜索BackgroundWorker控件并在其中找到项目。问题是,当我找到一个项目时,我需要更改它的ListView并滚动到我的backcolor中。

我的ListView代码

Backgroundworker

一切正常,但是每次找到匹配项时都会触发用于更新我的private void SearchTrackerList(int column,string text) { foreach (ListViewItem lvi in ListView_DeviceList.Items) { if (lvi.SubItems[column].Text.Equals(text)) { this.Invoke(new MethodInvoker(delegate { ListView_DeviceList.Items[lvi.Index].EnsureVisible(); lvi.BackColor = Color.Yellow; } )); deviceSearchFound = true; } } } 的我的调用,这会减慢整个代码的速度。找到项目后更新我的ListView控件的正确方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)