private void RefleshData() { if (_refleshMutex.WaitOne()) { _UpdateStatusDelegate updateStatusDele = new _UpdateStatusDelegate(_UpdateStatus); Invoke(updateStatusDele, new object[] { "更新中..." }); if (!String.IsNullOrEmpty(txtCode.Text)) { if (txtCode.Text[0] == '^') _stockMgr.RefreshHKIndice(); //Will be remove later ExtentedStockData stock = new ExtentedStockData((string)txtCode.Text.Clone()); if (txtCode.Text.EndsWith(".HK")) lblChartAnay.Links[0].LinkData = "http://www.aastocks.com/tc/stock/DetailChart.aspx?&symbol=" + txtCode.Text.Substring(0, txtCode.Text.Length - 3); else lblChartAnay.Links[0].LinkData = "http://hk.finance.yahoo.com/q/ta?s=" + txtCode.Text; try { _stockMgr.GetQuote(stock); System.Net.HttpWebRequest imgRequest; if (txtCode.Text.EndsWith(".HK")) imgRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://money18.on.cc/chart/d1/img/s_w_" + txtCode.Text.Substring(0, txtCode.Text.Length - 3) + ".jpg"); //imgRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://ichart.finance.yahoo.com/t?s=" + txtCode.Text.Substring(1)); else imgRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("http://ichart.finance.yahoo.com/t?s=" + txtCode.Text); System.Net.HttpWebResponse imgResponse = (System.Net.HttpWebResponse)imgRequest.GetResponse(); System.IO.Stream imgStream = imgResponse.GetResponseStream(); stock.img = Image.FromStream(imgStream); imgStream.Close(); imgResponse.Close(); _UpdateDataDelegate updateDele = new _UpdateDataDelegate(_UpdateData); Invoke(updateDele, new object[] { stock }); } catch (ThreadAbortException) { } catch (Exception ex) { Console.WriteLine(ex.Message); MessageBox.Show(ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); } } Invoke(updateStatusDele, new object[] { "" }); _refleshThread = null; _refleshMutex.ReleaseMutex(); } }
private void refleshData() { if (_refleshMutex.WaitOne(0)) { _UpdateStatusDelegate updateStatusDele = new _UpdateStatusDelegate(_UpdateStatus); Invoke(updateStatusDele, new object[] { "更新中..." }); StockData[] stocks = new StockData[dgvStockList.Rows.Count]; for (int i = 0; i < dgvStockList.Rows.Count; i++) stocks[i] = new StockData((string)dgvStockList.Rows[i].Cells["colName"].Tag); _stockMgr.RefreshHKIndice(); try { _stockMgr.GetQuote(stocks); } catch (ThreadAbortException) { } catch (Exception ex) { Console.WriteLine(ex.Message); MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } for (int i = 0; i < dgvStockList.Rows.Count; i++) { dgvStockList.Rows[i].DefaultCellStyle.BackColor = StockTool.Layout.getRocColor(stocks[i].ROC); dgvStockList.Rows[i].Cells["colPrice"].Value = stocks[i].close; dgvStockList.Rows[i].Cells["colChange"].Value = stocks[i].change; dgvStockList.Rows[i].Cells["colROC"].Value = stocks[i].ROC; if (!float.IsNaN(stocks[i].low) && !float.IsNaN(stocks[i].high)) dgvStockList.Rows[i].Cells["colTodayHL"].Value = stocks[i].low.ToString("F3") + " - " + stocks[i].high.ToString("F3"); else dgvStockList.Rows[i].Cells["colTodayHL"].Value = null; } Invoke(updateStatusDele, new object[] { "" }); _refleshMutex.ReleaseMutex(); _refleshThread = null; } }