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

C#List.Add System.InvalidOperationException

C#List.Add System.InvalidOperationException

C#
噜噜哒 2021-05-02 12:12:16
我正在处理来自其父窗体的子窗体中的事件,并且当我尝试从处理程序的事件args中包含的列表中添加项目时(在下面的代码中为ScraperForm_SiteScraped),我在控制台中收到异常System.InvalidOperationException 。有趣的是,它似乎在第一次添加时就成功了,但是没有后续尝试。public partial class ProxyTesterView : UserControl{    private BindingList<Proxy> proxies = new BindingList<Proxy>();    private BindingList<ProxyJudge> pudges = new BindingList<ProxyJudge>();    private BindingList<ProxyTest> tests = new BindingList<ProxyTest>();    private PauseOrCancelTokenSource pcts = new PauseOrCancelTokenSource();    private ProxyScraperForm scraperForm = new ProxyScraperForm();    public ProxyTesterView()    {        InitializeComponent();        proxies.ListChanged += Proxies_ListChanged;        scraperForm.SiteScraped += ScraperForm_SiteScraped;    }    private void Proxies_ListChanged(object sender, ListChangedEventArgs e)    {        ProxiesDataGridView.RowCount = proxies.Count;    }    private void AddFromScraperToolStripMenuItem_Click(object sender, EventArgs e)    {        scraperForm.Show();    }    private void ScraperForm_SiteScraped(object sender, SiteScrapedEventArgs e)    {        foreach (var proxy in e.ScrapedProxies)        {            proxies.Add(proxy);        }    }}子表格public partial class ProxyScraperForm : Form{    private BindingList<IProxyScraperSite> sites = new BindingList<IProxyScraperSite>();    public int ScrapeInterval { get; set; } = 60000;    public event EventHandler<SiteScrapedEventArgs> SiteScraped;    public ProxyScraperForm()    {        InitializeComponent();        sites.Add(new ProxyScraperSiteUsProxyOrg());        sites.Add(new ProxyScraperSiteFreeProxyListNet());        sites.Add(new ProxyScraperSiteFreeProxyListsNet());        sites.Add(new ProxyScraperSiteHideMyName());        sites.Add(new ProxyScraperSiteHidester());        ScraperDataGridView.DataSource = sites;    }    
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

从我们的评论中可以看出,这是一个线程问题。作为一种好习惯,当代码块中可能出现异常时,请始终使用try / catch块。:)

另外,如果您使用的是Visual Studio,则可以通过按CTRL + ALT + E并选中复选框来使VS中断更多的异常。您可以在此处阅读更多有关异常中断的信息



查看完整回答
反对 回复 2021-05-08
  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

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