Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }