Чтобы дождаться завершения Thread
, вы можете использовать Join
API.Однако это скорее всего не то, что вы хотите в этом сценарии.Join
в этом случае приведет к блокировке всего пользовательского интерфейса до завершения Thread
, что лишит цель наличия потока на первом месте.
Альтернативный дизайн - порождать Thread
и вызывать его обратно в пользовательский интерфейс после завершения через BeginInvoke
.Предполагая, getStatistics
возвращает List<KeyValuePair<string, string>
.
private void showStatistics(string path) {
Action<List<KeyValuePair<string, string>> action = list => {
foreach (KeyValuePair<string, string> item in list ) {
listBoxIps.Items.Add(item.Key + item.Value + "\n");
}
};
Thread thread = new Thread(() => {
Statistics myClass= new Statistics(path);
list = myClass.getStatistics();
this.BeginInvoke(action, list);
});
}