public partial class Form1 : Form
{
/// <summary>
/// 创建委托类型
/// </summary>
public delegate void TaskAsync();
/// <summary>
/// 声明委托
/// </summary>
public TaskAsync AsyncTest;
public Form1()
{
CheckForIllegalCrossThreadCalls = false; 直接设置未false存在问题
InitializeComponent();
AsyncTest += Asyncdisp;///注册事件
}
/// <summary>
/// 测试按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
AsyncTest();
}
private void Asyncdisp()
{
dddd();
}
public async Task dddd()
{
await Task.Run(() =>
{
long i = 0;
while (true)
{
i++;
listBox1.Items.Add(i.ToString());
if (listBox1.Items.Count != 0)
{
listBox1.SelectedIndex = listBox1.Items.Count - 1;
//Thread.Sleep(1);
}
}
});
}
}
正确方式1 使用:Invoke();
public partial class Form1 : Form
{
/// <summary>
/// 创建委托类型
/// </summary>
public delegate void TaskAsync();
private delegate void del(object item);
/// <summary>
/// 声明委托
/// </summary>
public TaskAsync AsyncTest;
// private int asd = 0;
public Form1()
{
//CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
AsyncTest += Asyncdisp;///注册事件
}
/// <summary>
/// 测试按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
AsyncTest();
}
private async void Asyncdisp()
{
await taskd();
}
object obj = new object();
public async Task taskd()
{
int i = 0;
await Task.Run(() =>
{
while (true)
{
lock (obj)
{
Invoke(new del((item) =>
{
listBox1.Items.Add(item);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
}), i);
i++;
}
}
if (true)
{
}
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
});
}
}