Tag: 调用

C#编译错误:“在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke。”

我刚刚发布了一个关于如何让代理人在另一个表单上更新文本框的问题。 正当我以为我有使用Invoke的答案时…这种情况发生了。 这是我的代码: 主要表格代码: using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; using System.Data.OleDb; using System.Collections.Specialized; using System.Text; using System.Threading; delegate void logAdd(string message); namespace LCR_ShepherdStaffupdater_1._0 { public partial class Main : Form { public Main() { InitializeComponent(); } public void add(string message) { this.Log.Items.Add(message); } public void logAdd(string […]

C#multithreading – 无控件调用

我对multithreading有点熟悉,因为我已经读过它,但从未在实践中使用它。 我有一个项目使用第三方库,通过引发事件来共享输入设备的状态。 问题是,编写库的方式这些事件是从不同的线程引发的。 我的应用程序不需要是multithreading的,我遇到了很多经典的线程问题(UI控件抱怨从不同的线程进行交互,集合被修改为一段代码迭代它,等等)。 我只想将第三方库的事件返回给我的UI线程。 具体我认为应该发生的是: 我的类接收事件,处理程序正在与UI不同的线程上运行。 我想检测这种情况(比如使用InvokeRequired),然后执行BeginInvoke的等效操作以将控制权交还给UI线程。 然后可以在类层次结构上发送正确的通知,并且只有一个线程触及我的所有数据。 问题是,接收这些输入事件的类不是从Control派生的,因此没有InvokeRequired或BeginInvoke。 原因是我试图干净地分离UI和底层逻辑。 该类仍然在UI线程上运行,它在类本身内部没有任何UI。 现在我通过破坏这种分离来解决问题。 我传入一个引用控件,该控件将显示来自我的类​​并使用其 Invoke方法的数据。 这似乎违背了分离它们的整个目的,因为现在底层类直接依赖于我的特定UI类。 也许有一种方法可以保存对运行构造函数的线程的引用,然后在Threading命名空间中会有一些执行Invoke命令的东西? 有没有解决的办法? 我的方法完全错了吗?

“System.InvalidOperationException:该对象目前正在其他地方使用” – 我该如何解决这个问题?

尝试更新图像时出现此错误。 这是一个跨线程更新,但我使用.Invoke(),所以这不应该是问题,如果它。

有没有办法在C#中进行动态隐式类型转换?

给定此类具有隐式转换运算符: public class MyDateTime { public static implicit operator MyDateTime(System.Int64 encoded) { return new MyDateTime(encoded); } public MyDateTime(System.Int64 encoded) { _encoded = encoded; } System.Int64 _encoded; } 我现在可以做以下事情: long a = 5; MyDateTime b = a; 但不是以下内容: long f = 5; object g = f; MyDateTime h = g; 这给出了编译时间: 无法将类型’object’隐式转换为’MyDateTime’。 我感觉合理。 现在我修改前面的例子如下: long f […]

Reflection MethodInfo.Invoke()从方法内部捕获exception

我调用了MethodInfo.Invoke()来通过reflection执行一个函数。 调用包装在try/catch块中,但它仍然不会捕获我正在调用的函数抛出的exception。 我收到以下消息: 用户未处理exception。 为什么MethodInfo.Invoke()阻止在Invoke()之外捕获exception? 我该如何绕过它?

如何从C#应用程序远程调用另一个进程方法

我有一个C#应用程序,我想从我的app调用一个函数名称,例如SendChatMessage(字符串消息,int userid)。但是这个函数属于我计算机上另一个运行的基于客户端/服务器的应用程序。 我找不到如何做到这一点的方式。 我尝试使用Reflection库进行此操作但失败了。 希望有人帮助我。 感谢帮助。

使用C#Dispatcher

我正在建立一个聊天客户端,并不是100%确定如何使用dispatcher 。 所以问题是我有一个方法: public void LostConnection() { myGUI.chatBox.AppendText(“Lost connection to room: “+ myGUI.UsernameText.ToString() + “\r\n”); } 我是否需要使用Dispatcher.Invoke来表达(myGUI.chatBox… )的语句? 我感谢任何帮助。

C#引用另一个方法的变量

我是C#的新手,我真的需要知道如何从另一个方法调用/使用字符串。 例如: public void button1_Click(object sender, EventArgs e) { string a = “help”; } public void button2_Click(object sender, EventArgs e) { //this is where I need to call the string “a” value from button1_click string b = “I need “; string c = b + a; } 所以在这个例子中,我需要从函数button2_Click()调用函数button1_Click()定义的字符串“ a ” 谢谢!!