|
Dear all,
In my program, I have written a method to send out an e-mail. However, my entire GUI freezes for a moment until the e-mail has been sent. I would like to create a worker thread that sends the e-mail ( invoke the method from that thread ) so that my main GUI stays alive and functional.
I've looked through many examples on the net, but they are all a bit of an overkill. I remember there was an easy way of doing it. Can anyone please point me in the right direction.
Cheers,
Rick
|
|
|
|
|
Well, generally speaking, multi-threaded applications are not that simple. However, you can use the BackgroundWorker or ThreadPool, those are the easiest to deal with, especially suitable in situations like yours.
Check thisout:
If you still have issues post back
"Every time Lotus Notes starts up, somewhere a puppy, a kitten, a lamb, and a baby seal are killed.
Lotus Notes is a conspiracy by the forces of Satan to drive us over the brink into madness. The CRC-32 for each file in the installation includes the numbers 666." Gary Wheeler
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Coo
|
|
|
|
|
Mustafa Ismail Mustafa wrote: However, you can use the BackgroundWorker or ThreadPool, those are the easiest to deal with, especially suitable in situations like yours.
Wha??? See my post. I dont understand why people want to revert to monsters!
|
|
|
|
|
Hmmm, live and learn. I've never actually had to send an email through C#. Thank you leppie, much obliged
"Every time Lotus Notes starts up, somewhere a puppy, a kitten, a lamb, and a baby seal are killed.
Lotus Notes is a conspiracy by the forces of Satan to drive us over the brink into madness. The CRC-32 for each file in the installation includes the numbers 666." Gary Wheeler
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Coo
|
|
|
|
|
leppie wrote: I dont understand why people want to revert to monsters!
OK - I now have an image of Scooby Doo in my head and it's not going away. Thanks for that.
|
|
|
|
|
SmtpClient.SendAsync() , make sure you attach to the SendCompleted event if you want to know it has finished.
|
|
|
|
|
Hello,
I have several precompiled binaries(but not the code) and am looking to make
a GUI to make the use of these binaries more user friendly. I was going to
call the binaries by using createprocess but the problem is when the binaries
run the command propmt flashes up and sort of makes the GUI look messy.
Is there a way I can call these binaries and request that their window/prompt
is not visible?
Thanks
|
|
|
|
|
ProcessStartInfo.CreateNoWindow = true;
|
|
|
|
|
Ylno wrote: I have several precompiled binaries(but not the code) and am looking to make
a GUI to make the use of these binaries more user friendly. I was going to
call the binaries by using createprocess but the problem is when the binaries
run the command propmt flashes up and sort of makes the GUI look messy.
Is there a way I can call these binaries and request that their window/prompt
is not visible?
Yes. Set the CreateNoWindow property in your Process StartInfo to true. See below.
Process cmdLineProcess = new Process();
cmdLineProcess.StartInfo.CreateNoWindow = true;
I'm going to become rich when I create a device that allows me to punch people in the face over the internet.
"If an Indian asked a programming question in the forest, would it still be urgent?" - John Simmons / outlaw programmer
|
|
|
|
|
Without looping over each element to copy them is there any way I can get a row of a 2d array into a 1d array?
ie something like this, except that would actually be able to compile:
object[,] 2dArray = Get2dArray(...);
object[] 1dArray = 2dArray[1];
Otherwise [Microsoft is] toast in the long term no matter how much money they've got. They would be already if the Linux community didn't have it's head so firmly up it's own command line buffer that it looks like taking 15 years to find the desktop.
-- Matthew Faithfull
|
|
|
|
|
What if you declare it as an array of 1d arrays, as follows:
object[][] 2dArray ... Obviously this only works if you have control over the return type of "Get2dArray", but you get the idea. I also don't know if you can cast an object[,] into an object[][] or not, but you could try it. Good luck,
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
I have control over the array source, but jagged arrays don't appear to play nice with COM (methods taking one as a parameter don't show up even with [ComVisible (true)] ), and I can't cast the one of the two types of arrays into the other.
Otherwise [Microsoft is] toast in the long term no matter how much money they've got. They would be already if the Linux community didn't have it's head so firmly up it's own command line buffer that it looks like taking 15 years to find the desktop.
-- Matthew Faithfull
|
|
|
|
|
Hmm... I can't think of anything else to try to get a one dimensional array. In C++ you could get a pointer to the first object of the array, then pass that pointer along with the length of your 1d array to a method. However, in C#, you can't have pointers to managed types (that I have actually been able to code). I would look into the "fixed" keyword and perhaps pass pointers instead of arrays, or change your language to C++, or just copy the contents from your 2d array to a 1d array. Hopefully someone else will have more ideas for you.
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
Use C, I believe you can address a 2D array like a 1D array.
Seriously though, Array.Copy might work.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
Ennis Ray Lynch, Jr. wrote: Use C, I believe you can address a 2D array like a 1D array.
Except for the COM wrapper the code's already been written in C# so changing the language isn't an option and learning c++.net just to write a slightly cleaner wrapper'd be overkill in terms of time spent. Seriously though, this is probably the first time in at least a year, maybe two where I've found myself thinking "dang, this would've been so much easier in C++".
Ennis Ray Lynch, Jr. wrote: Seriously though, Array.Copy might work.
Nope, the dimensional jackboots are still firmly in place.
Otherwise [Microsoft is] toast in the long term no matter how much money they've got. They would be already if the Linux community didn't have it's head so firmly up it's own command line buffer that it looks like taking 15 years to find the desktop.
-- Matthew Faithfull
|
|
|
|
|
I always thought it was a mistake the way C# does array indexes. I think they intentionally removed this ability. I just tried a few things I could think of and nothing really worked to well. I suppose you can use unsafe code and cast to get to it?
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
Yeah, perhaps a little too strongly typed.
|
|
|
|
|
At least its not ada.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
hi,
i installed visual studio .Net 2005.how i can work on the visual web developer ? and how i can open the ASP.NET Web application template?
|
|
|
|
|
zeeShan anSari,
File -> New
Regards,
Gareth
|
|
|
|
|
Hi all,
I'm trying to implement code that will shut down a form before it is even shown, in my case the form is an MDI child but I suppose the same principle will hold for any type of form.
The MDI parent invokes the form:
FormUser objfrmUser = new FormUser();<br />
objfrmUser.MdiParent = this;<br />
objfrmUser.Show();
I want the form itself to do some check that will determine whether it may be shown or not and, if not, display a nice little MessageBox after which it closes down. Something like:
if (doTest())<br />
{<br />
MessageBox.Show("No can do");<br />
this.Close();<br />
}
If I put this code in the Activated event handler I get an exception informing me that "Value Close() cannot be called while doing CreateHandle()".
If I put the code in the Shown event handler it works sort of. It displays the message and closes the form gracefully but it shows the form first and then display the message. I don't want the form to be visible when the message is shown.
Any ideas?
|
|
|
|
|
Dewald wrote: I don't want the form to be visible when the message is shown.
Any ideas?
Close it before showing the message box?
|
|
|
|
|
won't work
The problem is that you can't ".Close()" a form that's not already loaded.
So you can't use .Close in events like Load() which is called before the form is totaly loaded.
|
|
|
|
|
Depending on what you want to do:
- check the conditions in the constructor of FormUser - if they fail throw an exception (this is the best approach for security)
- check the condition before objfrmUser.Show (you will have to declare doTest "public")
- overload the Show-Method (calling the original Show-method) with additional doTest-Check
Best approach seems to be option 3
|
|
|
|
|
Excellent! I can't believe I didn't think of that (option 3 that is). Does exactly what I want.
Cheers,
D
|
|
|
|