0

这是我的部分代码

public MainWindow()
        {
            InitializeComponent();
try
                {       
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.my/install.php?data=" + uniqueID + "&pass=" + pass);
                    request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request);                   
                }
                catch (Exception)
                {
                }
}
private void FinishWebRequest(IAsyncResult result)
        {
            HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
            Stream dataStream = response.GetResponseStream();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd();
            // Display the content.
            Console.WriteLine(responseFromServer);
            // Cleanup the streams and the response.
            reader.Close();
            dataStream.Close();
            response.Close();

            if (responseFromServer == "1")
            {
                MessageBox.show("ok")
            }else{
                MessageBox.show("no")
            }

        }

虽然我使用异步,但似乎窗口会“挂起”一段时间......所以我认为放入加载指示器会很好,对吧?我应该在哪里以及如何放置它?我想的只是一个简单的加载指示器,而不是进度条..

4

2 回答 2

0

首先,将所有这些代码放在构造函数中是不好的做法。加载事件是这个逻辑更合适的地方。其次,您的问题很模糊:您想到的是哪种加载指示器?你想自己写,还是找第三方写的?您到底想完成什么,您的 GUI 设计是什么?

于 2012-06-05T14:04:27.593 回答
0

我使用此处提供的代码http://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/做一个后台工作者和该应用程序将不再挂起

于 2012-06-06T07:24:06.293 回答