我在将加载的数据从一个线程传递到另一个线程以将数据添加到表单中时出现问题。我将另一个对象添加到“var obj = new object [] {names}”中,并得到“参数计数不匹配”。我仍然希望将第二个线程中的“LoadData()”中的“客户端”和“消息”传递给第一个中的“UpdateFormMethod()”,但我不知道如何去做。如果有人能够帮助我解决这个问题,我将不胜感激。使用c中的调用在线程之间发送多个对象#
下面的代码的一个类中的重要组成部分:
private readonly Thread _thread;
public readonly Loader Loader = new Loader();
public Dictionary<string, Client> Clients;
public Dictionary<string, Message> Messages;
private bool _stopData = false;
public delegate void UpdateForm(object data);
public UpdateForm MyDelegate;
public Fcon() {
InitializeComponent();
MyDelegate = new UpdateForm(UpdateFormMethod);
_thread = new Thread(LoadData);
_thread.Start();
}
public void UpdateFormMethod(object data) {
foreach (var str in ((IEnumerable<string>)data).Where(str => !fcon_container_users_list.Items.Contains(str))) {
fcon_container_users_list.Items.Insert(0, str);
}
}
public void LoadData() {
while (!_stopData) {
Clients = Loader.GetClients(Operator);
Messages = Loader.GetMessages(Operator);
var status = Loader.SetStatus(Operator);
var names = new string[Clients.Count];
var x = 0;
foreach (var kvp in Clients) {
names[x] = "user_" + kvp.Value.id_fcon_client;
x++;
}
var obj = new object[] { names };
this.Invoke(this.MyDelegate, obj);
Thread.Sleep(1000);
}
}
public void StopData() {
_stopData = true;
}
请更明确地说明你的问题是什么。 (1)你究竟做了什么“添加其他对象”? (2)通过“我还是更愿意......”,你的意思是“我的问题是我怎么能...”,或者是真正的问题吗? – 2012-04-28 08:14:58