【发布时间】:2017-07-25 18:55:46
【问题描述】:
我正在探索在控制台应用程序中使用 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();”。当我将其注释掉时,我会弹出但线程不存在并且我的控制台应用程序继续运行。如何退出我的应用程序?任何指针?谢谢大家!
【问题讨论】:
-
这个页面stackoverflow.com/questions/19734151/…有很多信息,应该可以帮助我实现打印。
标签: c# multithreading webbrowser-control