⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 answerform.cs

📁 how to use RSS services on windows mobile
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Net;
using System.Threading;

namespace LiveQnA4
{
    public partial class AnswerForm : Form
    {
        DataRow itemRow;
        private DataSet ds;
        private bool webRequestPending = false;

        private delegate void RefreshListDelegate(DataSet ds);
        private delegate void EmptyListDelegate();

        public AnswerForm(DataRow itemRow)
        {
            InitializeComponent();
            this.itemRow = itemRow;
        }

        private void AnswerForm_Load(object sender, EventArgs e)
        {
            UpdateFeed();
            timer1.Interval = SettingsForm.RefreshTime * 60 * 1000;
            timer1.Enabled = true;
        }

        private void UpdateFeed()
        {
            string searchUrl = itemRow["link"] +
                "&format=RSS";

            webRequestPending = true;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(searchUrl);
            IAsyncResult asyncResult = request.BeginGetResponse(new AsyncCallback(EndUpdateFeed), request);
        }

        public void EndUpdateFeed(IAsyncResult result)
        {
            HttpWebRequest request = null;
            HttpWebResponse response = null;
            XmlTextReader xmlRdr = null;
            try
            {
                request = (HttpWebRequest)result.AsyncState;
                response = (HttpWebResponse)request.EndGetResponse(result);
                xmlRdr = new XmlTextReader(response.GetResponseStream());
                ds = new DataSet();
                ds.ReadXml(xmlRdr);
                response.Close();
                xmlRdr.Close();

                // check if there are any rows of answers to display
                if (ds.Tables.Contains("item"))
                {
                    Invoke(new RefreshListDelegate(RefreshList), ds);
                }
                else
                {
                    Invoke(new EmptyListDelegate(ShowEmptyList));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (response != null)
                    response.Close();
                if (xmlRdr != null)
                    xmlRdr.Close();
                webRequestPending = false;
            }
        }

        private void RefreshList(DataSet ds)
        {
            listView1.SuspendLayout();
            listView1.Items.Clear();
            foreach (DataRow answerRow in ds.Tables["item"].Rows)
            {
                string[] displayInfo = new string[2];
                displayInfo[0] = answerRow["description"].ToString();
                displayInfo[1] = answerRow["title"].ToString();
                ListViewItem item = new ListViewItem(displayInfo);
                item.Tag = answerRow;
                listView1.Items.Add(item);
            }
            listView1.ResumeLayout();
        }

        private void ShowEmptyList()
        {
            listView1.SuspendLayout();
            listView1.Items.Clear();
            string[] displayInfo = new string[2];
            displayInfo[0] = "NONE";
            displayInfo[1] = String.Empty;
            ListViewItem item = new ListViewItem(displayInfo);
            item.Tag = null;
            listView1.Items.Add(item);
            listView1.ResumeLayout();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            UpdateFeed();
        }

        private void AnswerForm_Closing(object sender, CancelEventArgs e)
        {
            timer1.Enabled = false;

            // if we have a request pending make sure to cancel it somehow.
            while (webRequestPending)
            {
                Thread.Sleep(1000);
            }

        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -