我一直在嘗試瞭解更多關於異步任務和線程的知識,但沒有取得很大的進展。C#股票代碼的異步任務
我試圖加載的「發動機」型線,將在啓動時在後臺運行,並能夠訪問UI線程更新變量,不掛UI線程。
在下面的代碼,發動機被調用,並且一個定單對象被創建,其保持(萊特幣/ USD)稱爲最後的電流值,也保持其它幾個值,這將是有用的。此代碼成功地將當前值分配給label1.text。我不一定需要代碼,但是我會採取什麼方法每秒在後臺創建一個代碼對象,並使用每個新的代碼對象值更新UI線程。
這是背景工作者的好例子嗎?
private void Form1_Load(object sender, EventArgs e)
{
Engine();
}
private void Engine()
{
Ticker ltcusd = BtceApi.GetTicker(BtcePair.LtcUsd);
label1.Text = "LTC/USD:" + ltcusd.Last;
}
編輯: 如果我這樣做,LABEL1引發InvalidOperationException由於跨線程操作的企圖(label1的在UI線程)。
private void Form1_Load(object sender, EventArgs e)
{
var t = Task.Factory.StartNew(() => Engine());
t.Start();
}
private void Engine()
{
while (true)
{
Thread.Sleep(1000);
Ticker ltcusd = BtceApi.GetTicker(BtcePair.LtcUsd);
label1.Text = "LTC/USD: " + ltcusd.Last;
}
}
您是否使用.NET 4.5和C#5? – 2013-05-05 18:45:18
是的(輸入至少15個字符) – user2163343 2013-05-05 18:47:20
並且'BtceApi'是你控制的東西,還是不是? (理想情況下,你會盡可能地使異步,使你甚至不需要另一個線程。) – 2013-05-05 18:51:54