|
Hi people
I'm using a web service to display the current weather on my main interface. At the moment I have to click a button everytime I want to update the weather, and while this is updating, my interface stalls for however long it takes to update which is usually 5 seconds. What I want to know is, is there a way to have this running on a separate thread without clicking a button and have it update continuously while still being able to work with the main interface?
Here is the code I use to update the current temperature:
string strTemperature = "";
GlobalWeatherService.GlobalWeatherSoapClient proxy = new aXYZ.GlobalWeatherService.GlobalWeatherSoapClient("GlobalWeatherSoap12", "http://www.webservicex.net/globalweather.asmx");
string weatherXml = proxy.GetWeather("Port Elizabeth", "South Africa");
StringReader reader = new StringReader(weatherXml);
XmlReader readerXml = XmlReader.Create(reader);
XmlDocument weatherXmlDoc = new XmlDocument();
weatherXmlDoc.Load(readerXml);
for (int i = 0; i < weatherXmlDoc.ChildNodes.Count; i++)
{
for (int j = 0; j < weatherXmlDoc.ChildNodes[i].ChildNodes.Count; j++)
{
if (weatherXmlDoc.ChildNodes[i].ChildNodes[j].Name == "Temperature")
strTemperature = weatherXmlDoc.ChildNodes[i].ChildNodes[j].InnerText;
}
}
lblTemperature.Content = strTemperature;
|
|
|
|
|
|
Thanks. I'll go through that now.
I tried using a DispatcherTimer like in the following code:
DispatcherTimer _timer = new DispatcherTimer(DispatcherPriority.Normal);
_timer.Interval = TimeSpan.FromMilliseconds(2000);
_timer.Tick += new EventHandler(delegate(object s, EventArgs a)
{
UpdateWeather();
});
_timer.Start();
I've tried about 4 different ways of using the Dispatcher, but no matter what I try, my UI keeps freezing while it's doing UpdateWeather. Can it be because I call this Timer from my form_Loaded event??
|
|
|
|
|
Hi,
you probably need this[^].
BTW: does the weather really change every 5 seconds where you live?
Luc Pattyn [Forum Guidelines] [My Articles]
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
I was going to lend him some of my threads if he can order me a cold snap for Tuesday.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
No problem. Is a 5-second cold snap within an otherwise hot November day sufficient?
Luc Pattyn [Forum Guidelines] [My Articles]
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Okay it seems to work with the BackgroundWorker.
backgroundMessageGetter.DoWork += new DoWorkEventHandler(backgroundMessageGetter_DoWork);
backgroundMessageGetter.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundMessageGetter_RunWorkerCompleted);
backgroundMessageGetter.ProgressChanged += new ProgressChangedEventHandler(backgroundMessageGetter_ProgressChanged);
backgroundMessageGetter.WorkerReportsProgress = true;
backgroundMessageGetter.RunWorkerAsync(this);
void backgroundMessageGetter_DoWork(object sender, DoWorkEventArgs e)
{
try
{
while (true)
{
GlobalWeatherService.GlobalWeatherSoapClient proxy = new aXYZ.GlobalWeatherService.GlobalWeatherSoapClient("GlobalWeatherSoap12",
"http://www.webservicex.net/globalweather.asmx");
string weatherXml = proxy.GetWeather("Port Elizabeth", "South Africa");
backgroundMessageGetter.ReportProgress(0);
Thread.Sleep(2000);
}
}
catch (Exception error)
{
System.Windows.MessageBox.Show(error.Message);
}
}
void backgroundMessageGetter_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
modified on Saturday, November 14, 2009 8:42 AM
|
|
|
|
|
Plz help me if any one can.
How I can get Text From TypeAhead Control.
I am using Visual Studio and developing my project in Asp.net using c#.
like i am using
String str = TypeAhead1.Text;
but always null value is returned..
|
|
|
|
|
CrossPost!
And allready answered here: Here
|
|
|
|
|
but plz tell me once more time, i need it.
|
|
|
|
|
Then my suggestion to you is:
Go back to your original post and continue the discussion there.
If people know the answer to your question, I'm sure you will get the help needed.
Posting the same question 4 times crossing various forums is not going to help you one bit.
|
|
|
|
|
I want to envoke some method when user click on tab of tabpage.
Clicking on tab of tabpage is not working but if click on any portion of tab page it works
/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/
private void tabPageAccount_Click(object sender, EventArgs e)
{
MessageBox.Show("in tab 3");
}
/*/*/*/*/*/*/*/*/*/*/*/*/*/**/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*
wats the problem?? Wats the solution?
|
|
|
|
|
See if there is an event like TabClick, TabChanged or SelectedIndexChanged.
|
|
|
|
|
Try using the TabControl class - it contains the TabPage controls and handles the tab selection - as you would expect.
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
"Rumour has it that if you play Microsoft CDs backwards you will hear Satanic messages.Worse still, is that if you play them forwards they will install Windows"
|
|
|
|
|
NO i didnt work..
i tried
void tabPageAccount_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
}
but this also dont work...
why is this so that it work if i click on container but not when i click on tab???
|
|
|
|
|
So, just to recap, what you want is:
1) You have a tab control, with tab pages.
2) When you click on the tab, you want an event to fire.
3) You have tried "mouse_click" for the page.
I say again: try the control. I created a form, with a tab control. I added handlers for the Click and MouseClick events of the tab control. Each handler has a MessageBox.Show command with a different string to display. When I click on the tab, it selects the appropriate tab page, and I get two message boxes. What have I done, that you haven't, or that you have done that I haven't?
namespace Testy
{
public partial class frmTabs : Form
{
public frmTabs()
{
InitializeComponent();
}
private void tabControl1_Click(object sender, EventArgs e)
{
MessageBox.Show("He Clicks! He Scores!");
}
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("He Clicks the Mouse! He Misses!");
}
}
}
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
"Rumour has it that if you play Microsoft CDs backwards you will hear Satanic messages.Worse still, is that if you play them forwards they will install Windows"
|
|
|
|
|
Thanks for your effort.
Wat u said is perfectly right.
But wat i want is:
private void tabPage1_Click(object sender, EventArgs e)
{
Message.Show("In Tab 1");
}
private void tabPage2_Click(object sender, EventArgs e)
{
Message.Show("In Tab 2");
}
clcik on tab and not on tab control.
Hope u got my problem
|
|
|
|
|
Um. The clue is in the question:
sachees123 wrote:
private void tabPage1_Click(object <big>sender</big>, EventArgs e)
{
Message.Show("In Tab 1");
}
private void tabPage2_Click(object <big>sender</big>, EventArgs e)
{
Message.Show("In Tab 2");
}
try:
private void tabControl1_Click(object sender, EventArgs e)
{
TabControl tc = sender as TabControl;
TabPage tp = tc.SelectedTab;
MessageBox.Show("He Clicks! He Scores!" + tp.Text);
}
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
"Rumour has it that if you play Microsoft CDs backwards you will hear Satanic messages.Worse still, is that if you play them forwards they will install Windows"
|
|
|
|
|
can u plz provide me ur email id??
i want to send u the screen shots of my project
|
|
|
|
|
No.
Never post your email to any forum. Not unless you want to be spammed to death, anyway.
Why would I need screen shots?
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
"Rumour has it that if you play Microsoft CDs backwards you will hear Satanic messages.Worse still, is that if you play them forwards they will install Windows"
|
|
|
|
|
Just to make u understand the gravity of the problem. But i dont think NOW it need to. As problem is solved.
Thanks a LOT..
|
|
|
|
|
You're welcome!
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
"Rumour has it that if you play Microsoft CDs backwards you will hear Satanic messages.Worse still, is that if you play them forwards they will install Windows"
|
|
|
|
|
i like your Signature
"No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones"
me also copied
|
|
|
|
|
Thank you - help yorself, I was thinking of changing them soon anyway!
No trees were harmed in the sending of this message; however, a significant number of electrons were slightly inconvenienced.
This message is made of fully recyclable Zeros and Ones
"Rumour has it that if you play Microsoft CDs backwards you will hear Satanic messages.Worse still, is that if you play them forwards they will install Windows"
|
|
|
|
|
private void onclicktab(object sender, EventArgs e)
{
label1.Text = tabControl1.SelectedIndex.ToString();
}
|
|
|
|