|
this can't work, your Load handler is running on the main (aka GUI) thread and so is the Navigated handler; this means the Navigated handler will not execute as long as the Load handler hasn't finished. You are deadlocked. Most often it is a bad idea (or plain wrong) to have blocking calls (such as Thread.Sleep or AutoResetEvent.WaitOne) inside an event handler.
probable solution: end your Load handler with the navigation command (you should first set the Navigated handler, then the URL); put everything that needs to be done after navigation in the Navigated handler. That is what it is for.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Hi. Thanks for the quick response.
I've just started learning thread on c sharp. So could you please explain more?
Basically I want a method "ValidateStudent" that will create a webbrowser object, navigate to school's website then post ID and Password and check if login succeed. But during this whole process the method should wait.
private bool nav = false;
private WebBrowser brs;
public ValidateStudent()
{
ar = new AutoResetEvent(false);
ar1 = new AutoResetEvent(false);
brs = new WebBrowser();
brs.Navigated += new WebBrowserNavigatedEventHandler(brs_Navigated);
brs.Url = new Uri("https://rooms.library.dc-uoit.ca/studyrooms/myreservations.aspx");
Console.Write(nav);
}
private void brs_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
nav = true;
}
This code is printing "False" because it does't wait for event to complete and prints "False" instantly. I want it to wait until event completes.
THANK YOU
Shivam
|
|
|
|
|
a handler is not supposed to wait at all, it should be swift: its purpose is to handle one event as fast as it can, so your app is ready to handle the next event, which could be anything from a keyboard event, a mouse moving, a window uncovering yours, etc.
Do not wait for anything inside a handler!!!
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
OK FINE. What is the solution for this problem?
Suggest some alternative way of doing it.
|
|
|
|
|
I agree with this answer ... Thank you.
|
|
|
|
|
Even if it could work (but see Luc's reply), there would be a race condition.
What if the navigation would be done before you add the event handler?
|
|
|
|
|
that is just a minor issue that gets fixed by swapping the two relevant statements.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
|
You may also run into a problem where the WebBrowser control will not work on a non-GUI thread. I've never tried it myself, but it's a possibility.
|
|
|
|
|
Don't try to wait for the event, instead do the processing in the event handler. In your cut down example here, move the Console.WriteLine into the Navigated event handler.
|
|
|
|
|
how display powerpoint in panel by c# please help
|
|
|
|
|
you can turn most any window into part of your app's GUI. What you need to do is set your Form as that window's parent. So you will need some P/Invoke calls to some native Win32 functions to find the window handle and then call SetParent. Here is a prototype to get you started:
[DllImport("user32.dll"), EntryPoint = "SetParent", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hwndChild, IntPtr hwndParent);
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Hi,
I have in my combobox two fields: txt and csv.when I choose txt and save my project,I return to my page,I found csv which is the default value.How can I save my choice?
|
|
|
|
|
What type of project is this, Windows or Web? The answer will depend a great deal on this.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Hi,
it is a web application
ty
|
|
|
|
|
Set EnableViewState=true on the control or set the SelectedIndex during your postback
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Hi,
where do I find this???this is my combobox fields
var controlFileType = new Ext.form.ComboBox ({
name : 'ExportFileType',
width : app.B_WIDTH * bWidthCoeff,
store : [[0, 'txt'],[1, 'csv']],
value : 0,
editable : false,
typeAhead : true,
debugInfo : "Type du fichier d'export",
fieldLabel : "Type du fichier d'export",
allowBlank : false,
selectOnFocus : true,
triggerAction : 'all',
labelSeparator : ''
});
ty
|
|
|
|
|
Better off asking this in the javascript forum.
|
|
|
|
|
Too late now, the question has already been asked here and we don't want duplicate questions all over the place.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
You are using some JavaScript library to create the dropdown. You are not using ASP.NET. If you want accurate and helpful answers to your questions you must provide ALL of the relevant details. I have no idea what Ext.form.ComboBox is.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Hello Everybody,
I am Filling DataGridView with DataTable. It's Working Fine But I want to change Column Header And Column Width Property By Using Fill Opertation.
Pls Help Required.
Thanks
If you can think then I Can.
|
|
|
|
|
eg_Anubhava wrote: By Using Fill Opertation
Please explain this? Do you mean DataSet.Fill?
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Yes Sir,
If i am Filling DataGridview by using DataTable.
Datagridview1.DataSource = Datatable1;
Then it DataGridView Header will be same as Table Header but i want to change the header as per as My Requirement. So Pls explain me how to possible it.
Thanks
If you can think then I Can.
|
|
|
|
|
Set AutoGenerateColumns to false and add the columns via the wizard or manually through code.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Set the column name to what you want in your SELECT statement.
SELECT fieldname columnname ...
|
|
|
|