Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以将线程与OpenForms一起使用。我的答案是主要问题,我想从另一个线程更新UI,他的“子问题”还有其他方法吗?首选哪种方式?!对不起,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadM_C#_Multithreading - Fatal编程技术网

C# 可以将线程与OpenForms一起使用。我的答案是主要问题,我想从另一个线程更新UI,他的“子问题”还有其他方法吗?首选哪种方式?!对不起,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadM

C# 可以将线程与OpenForms一起使用。我的答案是主要问题,我想从另一个线程更新UI,他的“子问题”还有其他方法吗?首选哪种方式?!对不起,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadM,c#,multithreading,C#,Multithreading,可以将线程与OpenForms一起使用。我的答案是主要问题,我想从另一个线程更新UI,他的“子问题”还有其他方法吗?首选哪种方式?!对不起,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadMass你应该读一下斯蒂芬·克利里关于此事的博客。简而言之。使用异步线程的正确方法不是线程。很抱歉,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadMass你应该读一下斯蒂芬·克利


可以将线程与
OpenForms
一起使用。我的答案是主要问题,我想从另一个线程更新UI,他的“子问题”
还有其他方法吗?首选哪种方式?
!对不起,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadMass你应该读一下斯蒂芬·克利里关于此事的博客。简而言之。使用异步线程的正确方法不是线程。很抱歉,这是我的错,我没有很好地表达我的问题,我想我必须删除这个question@MadMass为什么不直接编辑?@MadMass你应该读一下斯蒂芬·克利里关于此事的博客。简而言之。使用异步线程的正确方法不是线程。
public delegate int AddItem(object Item);
public Form1 F = (Form1)Application.OpenForms["Form1"];
private static async DoSomething()
{
    AddItem ad = new AddItem(F.ls1.Items.Add);
    await Task.Run(() =>F.EndInvoke(F.BeginInvoke(add,"NewItem")));
}
F.Invoke((MethodInvoker)delegate { F.ls1.Items.Add("NewItem"); });
F.Invoke((MethodInvoker)delegate { F.AddCategory("NewItem"); });
private static async Task DoSomethingAsync()
{
  Progress<object> progress = new Progress<object>(item => F.ls1.Items.Add(item));
  await Task.Run(() => BackgroundWork(progress));
}

private static void BackgroundWork(IProgress<object> progress)
{
  // Do background work here.
  var item = "NewItem";

  // Notify UI of progress.
  if (progress != null)
    progress.Report(item);
}
private static void StartSomething()
{
  IObservable<object> items = BackgroundWork();
  items.ObserveOn(F).Subscribe(item => F.ls1.Items.Add(item), ex => HandleException(ex));
}