好吧,所以這是(希望)一個非常簡單的修復,但我試圖創建一個允許外部訪問標籤的通用方法,現在Windows文檔確實給出了一個例子在這個單個案例用於從外部線程更改標籤文本的C#通用方法。
delegate void SetTextCallback(string text);
...some other code ...
private void SetText(string text)
{
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textLable.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textLable.Text = text;
}
}
但是我想創建一些更通用的東西,我可以沿着指向該對象的指針的行傳遞某些東西,但是Windows窗體中的文本標籤不允許這樣做。理想的情況是這種情況,我想的東西做的東西沿着這些線路(這不會在工作形式顯然,只是explainational目的)
...code...
private void SetText(string text, Label* lablePointer)
{
if (this.lablePointer.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.lablePointer.Text = text;
}
}
是否有這樣做的方法?我一直在尋找,但似乎沒有任何答案。
你爲什麼要用指針? – NtFreX
因爲我現在還不知道什麼更好(如果有更好的方法),但這只是爲了解決問題的要點。我希望我可以將它用於多個標籤,以便其他線程可以訪問它們,並節省我爲每個標籤寫入一百萬種這些方法。 – Metric