c#WebBrowser Print()ConsoleApp中的线程

时间:2017-07-25 18:55:47

标签: c# multithreading webbrowser-control

我正在探索在控制台应用程序中使用WebBrowser.Print方法打印网页的选项。 我确实希望PrintDialog出现。我使用过WebBrowser Control in a new thread的代码 它确实给了我一个很好的起点。

我的代码看起来:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Forms;

namespace STAThreadConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri url = new Uri("http://www.google.com");
            runBrowserThread(url);
        }
        static void runBrowserThread(Uri url)
        {

            var th = new Thread(() => {
                var br = new WebBrowser();
                br.DocumentCompleted += browser_DocumentCompleted;
                br.Navigate(url);
                Application.Run();
            });
            th.SetApartmentState(ApartmentState.STA);
            th.Start();
        }

        static void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var br = sender as WebBrowser;
            if (br.Url == e.Url)
            {
                Console.WriteLine("Natigated to {0}", e.Url);
                br.ShowPrintDialog();
                Application.ExitThread();   // Stops the thread
            }
        }

    }
}

我不会在browser_DocumentCompleted方法中弹出“Application.ExitThread();”。当我发表评论时,我会弹出,但线程不存在,我的控制台应用程序继续运行。如何退出我的申请?有什么指针吗?谢谢大家!

1 个答案:

答案 0 :(得分:1)

我使用这篇文章并对其进行修改以满足我的要求。 Print WebBrowser without previewing i.e. single click print 感谢https://stackoverflow.com/users/1768303/noseratio