Task异步回调

yangniao 2016-04-08 10:50:38

public partial class Form1 : Form
{
List<aa> list = new List<aa>();
public Form1()
{
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
setGridviewColumn();
cc();

}
private void setGridviewColumn()
{
this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Name = "id", HeaderText = "编号", DataPropertyName = "id", ValueType = typeof(string) });
this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Name = "name", HeaderText = "名字", DataPropertyName = "name", ValueType = typeof(string) });
}
private List<aa> reutnr()
{
list = new List<aa>();
Thread.Sleep(1000);
for (int i = 0; i < 10000; i++)
{
list.Add(new aa() { id = i.ToString(), name = "姓名:" + i.ToString() });
}
return list;
}
void cc()
{
try
{
#region 这样的处理能,有时候会出现错误的对象一下几种情况 ①未将对象引用设置到对象的实例,②对象当前正在其他地方使用。③假死
Task.Factory.StartNew(() => { this.dataGridView1.DataSource = reutnr(); });
#endregion
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
}


上面的错误,并不是每次都一样,基本上就这几种,
然后我想会不会是窗体空间没有加载完,数据就已经加载完了,或者怎么样

...全文
830 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangniao 2016-04-08
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
除了cc之外,还有setGridviewColumn
一样都是报那个错误
yangniao 2016-04-08
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
而且cc这种代码也应该放到Load事件里,而不是直接在构造函数里写
cc放在load事件里边也不行

 public Form1()
        {
            Control.CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
            setGridviewColumn();
            this.Load += (s, e) => { cc(); };


        }
  • 打赏
  • 举报
回复
除了cc之外,还有setGridviewColumn
  • 打赏
  • 举报
回复
而且cc这种代码也应该放到Load事件里,而不是直接在构造函数里写
  • 打赏
  • 举报
回复

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧