読み込まれたデータをあるスレッドから別のスレッドに渡してデータをフォームに追加する際に問題があります。「var obj = new object[] { names }」に別のオブジェクトを追加すると、「パラメーター数の不一致」が発生しました。2 番目のスレッドの「LoadData()」から「Clients」と「Messages」を最初のスレッドの「UpdateFormMethod()」に渡したいと思いますが、その方法がわかりません。誰かがこの問題で私を助けることができれば、私は感謝します.
1 つのクラス内のコードの重要な部分を次に示します。
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;
}