私は問題がありました: 別のスレッドからラベル内のフォントの色を更新しようとしましたが、失敗してしまいました。WinFormsラベルのフォアカラー更新
private Color defaultBgColor = Color.Red;
private Color passOkBgColor = Color.LightGreen;
private Color defaultForeColor = Color.FromArgb(255, 255, 255, 255);
private Color passOkForeColor = Color.FromArgb(255, 0, 0, 255);
私の機能があります:
private void Func() {
try {
if (pipeReader != null) {
string msg_strg = String.Empty;
while(true) {
if (!npsc.IsConnected) {
npsc.Connect();
Thread.Sleep(500);
continue;
}
while ((msg_strg = pipeReader.ReadLine()) != null) { ;
statusLabel.BeginInvoke((MethodInvoker)(() => {
if (statusesDict.ContainsKey(msg_strg))
statusLabel.Text = statusesDict[msg_strg];
else
statusLabel.Text = "!UNKNOWN STATUS!";
if (msg_strg != "CARDREADER_USER_EXISTS") {
this.BackColor = defaultBgColor;
statusLabel.ForeColor = defaultForeColor;
} else {
this.BackColor = passOkBgColor;
statusLabel.ForeColor = passOkForeColor;
}
}));
statusLabel.Refresh();
Thread.Sleep(300);
}
}
}
} catch (Exception ex) {
Log.Instance.Error("Exception: "+ex.Message);
}
}
どのように私はこの問題を解決する必要がありますか?
* ...しかし、それが失敗した*あなたはより具体的だろうか? –
'statusLabel.Refresh();'も呼び出されるべきではありませんか? – ASh