C# 是否在异步方法中运行Windows.Forms.webbrowser.Navigate?
我正在编写一个测试程序,通过在异步任务函数中运行Navigate(URL)方法,在windows.form的web浏览器上打开一个网页(exp.) 但它不会打开表单并显示网页,尽管我在那里设置了断点,并看到在Navigate之前调用了函数,但没有调用Navigate函数 表格编号:C# 是否在异步方法中运行Windows.Forms.webbrowser.Navigate?,c#,winforms,asynchronous,C#,Winforms,Asynchronous,我正在编写一个测试程序,通过在异步任务函数中运行Navigate(URL)方法,在windows.form的web浏览器上打开一个网页(exp.) 但它不会打开表单并显示网页,尽管我在那里设置了断点,并看到在Navigate之前调用了函数,但没有调用Navigate函数 表格编号: public partial class ImmoScoutForm : Form { public ImmoScoutForm() { InitializeComponent();
public partial class ImmoScoutForm : Form
{
public ImmoScoutForm()
{
InitializeComponent();
//this.immoScoutWebBrowser.Navigate("http://www.microsoft.com");
//NavigateWebPage();
this.immoScoutWebBrowser.Navigated += new System.Windows.Forms.WebBrowserNavigatedEventHandler(webBrowser_Navigated);
this.immoScoutWebBrowser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(WebBrowserDocumentCompleted);
}
public void NavigateWebPage()
{
this.immoScoutWebBrowser.Navigate("http://www.microsoft.com");
}
public void NavigateWebPage(WebBrowser wb)
{
if (wb != null)
{
wb.Navigate("http://www.microsoft.com");
}
}
private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
HideScriptErrors(this.immoScoutWebBrowser, true);
//if (ConnectBtn.IsEnabled)
//{
// ConnectBtn.IsEnabled = false;
//}
}
public void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
MessageBox.Show("Operation has completed !");
}
public static void HideScriptErrors(System.Windows.Forms.WebBrowser wb, bool Hide)
{
FieldInfo fiComWebBrowser = typeof(System.Windows.Forms.WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if (fiComWebBrowser == null) return;
object objComWebBrowser = fiComWebBrowser.GetValue(wb);
if (objComWebBrowser == null) return;
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { Hide });
}
}
class program.cs
static class Program
{
private static ImmoScoutTestForms.ImmoScoutForm _immoScoutWebForm;
public static ImmoScoutTestForms.ImmoScoutForm ImmoScoutWebForm
{
get { return _immoScoutWebForm; }
set
{
_immoScoutWebForm = value;
}
}
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ImmoScoutWebForm = new ImmoScoutTestForms.ImmoScoutForm();
//OpenThePage();
Task.Run(() => CallPageAsyn().Wait());
//Application.Run(ImmoScoutWebForm);
}
public static void OpenThePage()
{
if(ImmoScoutWebForm != null)
{
ImmoScoutWebForm.immoScoutWebBrowser.Navigate("http://www.microsoft.com");
}
Application.Run(ImmoScoutWebForm);
}
public static async Task CallPageAsyn()
{
await TestAsyn();
ImmoScoutWebForm.immoScoutWebBrowser.Navigate("http://www.microsoft.com");
}
public static async Task TestAsyn()
{
Console.WriteLine("Waiting: ");
}
静态类程序
{
私有静态immoscoutteForms.ImmoScoutForm\u immoScoutWebForm;
公共静态immoscoutteForms.ImmoScoutForm ImmoScoutWebForm
{
获取{return}
设置
{
_不固定形式=值;
}
}
///
///这是一个很好的例子。
///
[状态线程]
公共静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ImmoScoutWebForm=新的ImmoScoutTestForms.ImmoScoutForm();
//打开页面();
Task.Run(()=>CallPageAsyn().Wait());
//Application.Run(immoswcowebform);
}
公共静态无效打开页面()
{
if(immoScowebForm!=null)
{
IMMOSCOWTWebForm.IMMOSCOWTWebrowser.Navigate(“http://www.microsoft.com");
}
Application.Run(immoswcowebform);
}
公共静态异步任务CallPageAsyn()
{
等待TestAsyn();
IMMOSCOWTWebForm.IMMOSCOWTWebrowser.Navigate(“http://www.microsoft.com");
}
公共静态异步任务TestAsyn()
{
控制台。WriteLine(“等待:”);
}
}
我不知道为什么“await TestAsyn();”之后的函数不能被调用,而编译器已经完成了它?或者你知道我怎么做吗