ConsoleApp 中的 c# WebBrowser Print() 线程
c# WebBrowser Print() Thread in ConsoleApp
我正在探索在控制台应用程序中使用 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();
”。当我将其注释掉时,我确实弹出但线程不存在并且我的控制台应用程序继续 运行。如何退出我的应用程序?任何指针?谢谢大家!
我使用了这个 post 并对其进行了修改以满足我的要求。 Print WebBrowser without previewing i.e. single click print
感谢https://whosebug.com/users/1768303/noseratio
我正在探索在控制台应用程序中使用 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();
”。当我将其注释掉时,我确实弹出但线程不存在并且我的控制台应用程序继续 运行。如何退出我的应用程序?任何指针?谢谢大家!
我使用了这个 post 并对其进行了修改以满足我的要求。 Print WebBrowser without previewing i.e. single click print 感谢https://whosebug.com/users/1768303/noseratio