在UI线程上下文中执行代码的正确方法?

马哈茂德

我想从另一个线程更新UI,
我有很多选择可以在UI Thread上下文中执行代码:

1:使用BeginInvoke / EndInvoke方法:
伪代码

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")));
}


2:使用Progress / IProgress:我不知道如何实现

还有其他方法吗?哪个是首选方式?

注意:调用Task的线程与UI线程不同,因此Progress在这里可能无法正常工作

马克·格雷韦尔

IMO,您正在使它变得过于复杂:

F.Invoke((MethodInvoker)delegate { F.ls1.Items.Add("NewItem"); });

会很好地工作。需要async吗?我认为您不会这样做,因为这不太可能是一项昂贵的操作:仅为此目的释放工作线程并没有太大好处。

注意:个人而言,如果F直接封装更多这些内容,我更喜欢它;请注意;例如:

F.Invoke((MethodInvoker)delegate { F.AddCategory("NewItem"); });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular 在正确的上下文中执行传递的方法引用

来自分类Dev

线程上下文中的模板方法

来自分类Dev

线程上下文中的模板方法

来自分类Dev

在沙箱中执行代码,模块在相同的上下文中

来自分类Dev

Ruby:在不同的上下文中执行单例方法

来自分类Dev

如果调用方法然后对结果执行.Where(),如何执行“从上下文中的tbl返回(从上下文中的[表名]选择tbl]”)?

来自分类Dev

多线程上下文中的assert()安全

来自分类Dev

在哪个上下文中执行被传递给ruby中的方法的块?

来自分类Dev

在严格的上下文中,在C中使用双链表,这是插入元素的正确方法?

来自分类Dev

在Nashorn中的特定上下文中执行功能

来自分类Dev

在哪个上下文中执行MidiInProc回调?

来自分类Dev

在Dispatcher.Main的上下文中执行网络任务

来自分类Dev

cron任务是在什么上下文中执行的?

来自分类Dev

从上下文中猜测Num的正确实例

来自分类Dev

努力在我的网站代码的上下文中理解 MVC

来自分类Dev

如何从类方法内部添加实例方法,该类方法接受要在实例上下文中执行的块

来自分类Dev

子节点上下文中拼接方法的奇怪行为

来自分类Dev

在Hibernate的load()方法上下文中,代理是什么?

来自分类Dev

如何在TextWatcher方法上下文中获取View?

来自分类Dev

从非静态上下文中调用静态方法

来自分类Dev

Apache的骆驼上下文中删除路由定义方法

来自分类Dev

在RSpec上下文中包含FactoryGirl方法?

来自分类Dev

如何在TextWatcher方法上下文中获取View?

来自分类Dev

Ruby:基类上下文中的Execute方法

来自分类Dev

从静态上下文中的 a 调用非静态方法

来自分类Dev

无法在非静态上下文中访问静态方法

来自分类Dev

我可以回到线程执行上下文吗?

来自分类Dev

什么是线程上下文?

来自分类Dev

在Task内部等待之后的代码执行上下文

Related 相关文章

  1. 1

    Angular 在正确的上下文中执行传递的方法引用

  2. 2

    线程上下文中的模板方法

  3. 3

    线程上下文中的模板方法

  4. 4

    在沙箱中执行代码,模块在相同的上下文中

  5. 5

    Ruby:在不同的上下文中执行单例方法

  6. 6

    如果调用方法然后对结果执行.Where(),如何执行“从上下文中的tbl返回(从上下文中的[表名]选择tbl]”)?

  7. 7

    多线程上下文中的assert()安全

  8. 8

    在哪个上下文中执行被传递给ruby中的方法的块?

  9. 9

    在严格的上下文中,在C中使用双链表,这是插入元素的正确方法?

  10. 10

    在Nashorn中的特定上下文中执行功能

  11. 11

    在哪个上下文中执行MidiInProc回调?

  12. 12

    在Dispatcher.Main的上下文中执行网络任务

  13. 13

    cron任务是在什么上下文中执行的?

  14. 14

    从上下文中猜测Num的正确实例

  15. 15

    努力在我的网站代码的上下文中理解 MVC

  16. 16

    如何从类方法内部添加实例方法,该类方法接受要在实例上下文中执行的块

  17. 17

    子节点上下文中拼接方法的奇怪行为

  18. 18

    在Hibernate的load()方法上下文中,代理是什么?

  19. 19

    如何在TextWatcher方法上下文中获取View?

  20. 20

    从非静态上下文中调用静态方法

  21. 21

    Apache的骆驼上下文中删除路由定义方法

  22. 22

    在RSpec上下文中包含FactoryGirl方法?

  23. 23

    如何在TextWatcher方法上下文中获取View?

  24. 24

    Ruby:基类上下文中的Execute方法

  25. 25

    从静态上下文中的 a 调用非静态方法

  26. 26

    无法在非静态上下文中访问静态方法

  27. 27

    我可以回到线程执行上下文吗?

  28. 28

    什么是线程上下文?

  29. 29

    在Task内部等待之后的代码执行上下文

热门标签

归档