Элемент управления WebBrowser застрял - PullRequest
0 голосов
/ 19 июля 2011

Я создавал приложение, которое публикует видео в домене пользователей. Я использовал для этого веб-браузер. Это работает довольно хорошо, без ошибок. Но когда у приложения есть больше видео для публикации, тогда оно иногда застревает.

Например, когда я нажимаю кнопку подтверждения в коде, он работает хорошо, но когда он делает это, может быть 10 раз, он останавливает обряд, иногда он продолжается после некоторых задержек и также продолжается, если мы нажимаем кнопку вручную.

Это странная вещь. Любая подсказка, что может быть не так или может быть, есть какая-то проблема с кешем.

если есть альтернативный способ сделать это, пожалуйста, дайте мне знать

КОД в событии DocumentComplete

//Select HTML view
                if (webBrowserPostVideo.Document.GetElementById("edButtonHTML") != null)
                    webBrowserPostVideo.Document.GetElementById("edButtonHTML").InvokeMember("click");
                //Enter Content
                if (webBrowserPostVideo.Document.GetElementById("content") != null)
                {
                    webBrowserPostVideo.Document.GetElementById("content").InvokeMember("click");
                    webBrowserPostVideo.Document.GetElementById("content").InvokeMember("click");
                    webBrowserPostVideo.Document.GetElementById("content").InvokeMember("click");
                    webBrowserPostVideo.Document.GetElementById("content").SetAttribute("InnerText",
                        youtubeVideos[SelectedVideo].VideoCode
                                    .Replace("<HTML>", "").Replace("</HTML>", "").Replace("<BODY>", "").Replace("</BODY>", ""));
                }

                //post Month
                if (webBrowserPostVideo.Document.GetElementById("mm") != null && youtubeVideos[SelectedVideo].PostingDateTime.Substring(6, 2) != null)
                    webBrowserPostVideo.Document.GetElementById("mm").SetAttribute("value",
                        youtubeVideos[SelectedVideo].PostingDateTime.Substring(5, 2));
                //Post Date
                if (webBrowserPostVideo.Document.GetElementById("jj") != null && youtubeVideos[SelectedVideo].PostingDateTime.Substring(8, 2) != null)
                    webBrowserPostVideo.Document.GetElementById("jj").SetAttribute("value",
                        youtubeVideos[SelectedVideo].PostingDateTime.Substring(8, 2));
                //Post Year
                if (webBrowserPostVideo.Document.GetElementById("aa") != null && youtubeVideos[SelectedVideo].PostingDateTime.Substring(0, 4) != null)
                    webBrowserPostVideo.Document.GetElementById("aa").SetAttribute("value",
                        youtubeVideos[SelectedVideo].PostingDateTime.Substring(0, 4));
                //Post Hour
                if (webBrowserPostVideo.Document.GetElementById("hh") != null && youtubeVideos[SelectedVideo].PostingDateTime.Substring(11, 2) != null)
                    webBrowserPostVideo.Document.GetElementById("hh").SetAttribute("value",
                        youtubeVideos[SelectedVideo].PostingDateTime.Substring(11,2));
                //Post Minutes
                if (webBrowserPostVideo.Document.GetElementById("mn") != null && youtubeVideos[SelectedVideo].PostingDateTime.Substring(14, 2) != null)
                    webBrowserPostVideo.Document.GetElementById("mn").SetAttribute("value",
                        youtubeVideos[SelectedVideo].PostingDateTime.Substring(14, 2));


                //Enter Video Title
                if (webBrowserPostVideo.Document.GetElementById("title") != null)
                    webBrowserPostVideo.Document.GetElementById("title").SetAttribute("value", youtubeVideos[SelectedVideo].VideoTitle);

                if (webBrowserPostVideo.Document.GetElementById("publish") != null)
                {
                    Thread.Sleep(2000);
                    webBrowserPostVideo.Document.GetElementById("publish").InvokeMember("click");
                    webBrowserPostVideo.Document.GetElementById("publish").InvokeMember("click");
                    Thread.Sleep(2000);

                    SelectedVideo++;
                    webBrowserPostVideo.Document.GetElementById("publish").InvokeMember("click");

                }
...