begininvoke,在Devexpress的GridControl控件里?
这个问题一般是由跨线程操作UI引起的,以前 DevExpress 的官方文档里专门有这个问题,我刚才找了下新版本的,没找到。不过你用谷歌或者必应搜索:xtragrid big red-cross 会有很多相似问题,答案基本都是因为跨线程操作引起的。一般来说可视的控件里只有三个方法是线程安全的:CreateGraphics、BeginInvoke 和 Invoke。其他情况,需要自己确保线程安全。
winform怎么使用新线程打开窗口?
打开窗口的代码是完全一样的,new一个窗体,用Show()或者ShowDialog()方法即可。用另一个线程的方法很多,用BeginInvoke很简单。比如:
invoke和直接调用的区别是?
在编程中,"invoke"通常指的是通过方法或函数调用来执行某个操作或执行某个方法。而"直接调用"则是指直接调用某个方法或函数的名称来执行对应的操作。以下是它们之间的一些区别:
1. 调用方式:"invoke"是一个通用术语,可以涵盖各种编程语言和平台的调用方式,包括函数调用、方法调用、委托调用、反射调用等。而"直接调用"则指的是在代码中直接通过方法或函数的名称来调用并执行操作。
2. 动态性:"invoke"通常具有更大的灵活性和动态性,可以在运行时根据条件或参数来决定需要调用的方法或函数。这在一些需要根据不同条件执行不同方法的情况下很有用。而"直接调用"则是在编码阶段就确定要调用的方法或函数。
3. 可读性:"直接调用"可能更容易理解和阅读,因为方法或函数的调用直接暴露在代码中,不需要解释或额外的复杂性。而"invoke"有时可能需要更多的上下文信息或解释来理解其调用的目的和方式。
4. 性能:由于"invoke"提供了更多的动态和灵活的调用方式,可能会引入额外的运行时检查和分派机制,因此在某些情况下,与直接调用相比,可能会有一定的性能开销。
需要根据具体的上下文和编程语言来理解"invoke"和直接调用之间的区别。在大多数情况下,直接调用是指通过方法或函数的名称来执行操作,而"invoke"是一个更通用和灵活的概念,可以适用于不同的调用方式和场景。
线程和委托区别?
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
怎么让线程能够异步的执行呢?
没分? 给你个思路!
从主线程 new Thread 开一个支线程
在支线程中 用delegate (委托)执行要操作的方法,
用委托BeginInvoke执行改委托,得到一个IAsyncResult的结果
并一直判断 IAsyncResult的IsCompleted(表示异步是否执行完成)
若执行完成,用EndInvoke 得到异步操作的结果,再用主线程上的Invoke 执行显示结果
(应为主线程,只做了一件事,开了一支线程。异步调用 和等待异步的结束,都是支线程做的,这样主线程不会假死,当主线程要显示结果了,直接操作是又问题的,应为跨了线程!只能用Invoke )
还没有评论,来说两句吧...