【发布时间】:2018-09-01 19:44:50
【问题描述】:
我目前正在尝试创建一个单独的线程来显示服务器消息,但我得到一个错误,说我为标签 2 使用了错误的线程。
我的代码是这样的
Thread MOTD = new Thread(() =>
{
System.Net.WebClient wc = new System.Net.WebClient();
// Use webclient to download webpage from target URL
byte[] raw = wc.DownloadData("https://targaryentech.com/Backend/test.txt");
// Convert to string
string webData = System.Text.Encoding.UTF8.GetString(raw);
// String to MessageBox
label2.Text = webData;
});
MOTD.Start();
【问题讨论】:
-
标签 2 很可能在“主线程”上创建并放置在那里,您应该考虑调用控件
-
@Karky - 您可以查看我列出的重复问题。它向您展示了如何做到这一点。您需要在主线程中执行标签更新。你通过调用来做到这一点。副本中有示例,还有一个答案很好地解释了 UI 线程模型。
-
@Karky - 顺便说一句,
WebClient实现了IDisposable,所以当你完成它时你应该调用Dispose。一种简单的方法是将其包装在using语句中。
标签: c# multithreading