Read about synclock and monitor. They provide a mechanism that locks an object and blocks other threads from accessing it except the thread that created the lock. When the lock is released the blocked threads are allowed similar lock and access.
I’m writing a C# DLL that executes a web browser. I have to grab a static image when the browser is done updating. So I wrote the following code.
public string SaveImageToFile()
int done = 0;
String file = "";
while (done < 20)
if (((webbrowser1.IsBusy == false) && (webbrowser1.ReadyState == WebBrowserReadyState.Complete)) || (done == 19))
Bitmap docImage = new Bitmap(webbrowser1.Width, webbrowser1.Height);
webbrowser1.DrawToBitmap(docImage, new Rectangle(webbrowser1.Location.X,
webbrowser1.Location.Y, webbrowser1.Width, webbrowser1.Height));
file = "C:\\Rumper\\tempA" + num + ".bmp";
done = 20;
However when I call SaveImageToFile from my MFC application, I get a stackoverflow. If I comment out the DoEvents. No stack overflow and no image.
I need to replace DoEvents, but I’m not sure what would be a better method.
Is this method called from within an event handler? If so, calling DoEvents may be refiring the same event and calling your code again, and again while you are still inside of the While loop. I would suggest removing the event handler at the begining to the SaveImageToFile method, then adding the handler at the end. This can also be done within the Event handler method as well.
I have had way to many headaches for this problem to hit me again, and 99% of the time, it's because the event is being fired before your code completes.
Hope this helps,
"Some people spend an entire lifetime wondering if they made a difference. The Marines don't have that problem."
( President Ronald Reagan)
I'm using serialization of objects for a client-server application, these need to communicate and I want them to send and receive a message (ApiMessage) that contains a base class NetworkElement. There are several types of network elements that derive from this base class.
class NetworkElementX: NetworkElement
When I fill my message with a NetworkElementX and serialize an exception is thrown, the inner exception mentions that class NetworkElementX is not expected and I should use a XmlInclude arghhhh
The technology is great and works in cases when I use an ArrayList to transport objects. I shall try and encapsulate my object in an ArrayList and see if that works.
I've tried all sorts and been going around in circles for ages, if anyone has any pointers it'd be much appreciated.
good morning freinds,
i m designing crystal report in.net framework i.e. bundeled version.
i am preparing payslip, for that i wnt to place watermark image on page.
whn i insert picture by right clicking on the report then it is inserting my backgruound image but lines present on my report go backward & also not shown whn i run the project.
i rightclick on image & send it backward but it lines will not cum in front.
& there is no option of line to bring it forward .
please anyone tell me how should i place background image on my report.
thanks for any help in advance.
"The Difficult i can do it now...
The Impossible will take a little longer."
i have got complete payroll source code if you want it send mail or
IM in yahoo my yahoo id is nare700
my emails firstname.lastname@example.org
I have read the previous posting in this forum. In it, it mentioned the use of dataset to achieve this.
I create a dataset which one of the field in the data table is base64binary.
After retrieval of the file path, open the file and store the image file as array of byte in that column.
When you bind the dataset to your report as the data source, you can easily drag and drop the image field to your report.
Conversion of image file to array of byte:
Dim fs As New System.IO.FileStream(<file path="">, IO.FileMode.Open)
Dim br As New System.IO.BinaryReader(fs)
Dim arrayByte() As Byte
arrayByte = br.ReadBytes(CInt(fs.Length))
I have developed an app using .NET 2.0 Framework, and now have a potential customer wanting to run it on Windows NT. I have trawled the web for the last 2 nights, all leading me to the same conclusion; .NET 2.0 cannot be installed on WIn NT. Could someone please confirm or deny this for me please.
This article would have you use a wrapper class that serializes more nicely than DataSet, and in fact it really does halve the size of the dataset (in serialized form).
However, the time it takes to serialize a decently sized dataset 100 times to the time it takes to serialize the surrogate 100 times is 6 seconds to 30...
Nonetheless it seems like the overall consensus is that it's good to avoid sending DataSets across remoting and soap.
What are your thoughts and solutions on the matter?
Thanks for your response. I looked at your solution and it may work well enough for files, but in serialization and compression it's really the file type that matters. You created a pseudo-schema, which is almost like a dataset in itself.
I'm just trying to find the quickest way to do it. The problem with the Surrogate that MSDN suggests is the large overhead to get to it.
A simple object (light but a pain to use) outperforms DataSet and DataSurrogate (zipped and unzipped) significantly on a small number of rows, but as the actual size increases, the difference fades.
I want to write my program in .NET 2.0, just because I'm used to it (and because it will be primarily run on XP). However, for a certain part of the screen (i.e. a separate window) I want to use WPF to render text and video etc. Is this possible? What I was thinking was creating a component in WPF, and adding it to my app. Does anyone know of an easy way to do this? Am I just confused, thinking that I cant use .NET 2 controls in a .NET 3 project?
supposed to return a value?
No, SmtpClient is a class, not a method. Perhaps you were thinking of the SmtpClient.Send() method? But it also doesn't return a value. If something goes wrong, it will only throw one of six exceptions, documented here[^].
Anybody know right off the top of their head how
to ping /poll the SMTP server before hitting
You can ping the target server, but there is nothing that says that the target server has to respond to that ping. It's also entirely possible that the target is sitting behind a firewall, blocking ICMP Echo requests, thereby neutering your attempt to "test" the server's presence.
Basically, you can try to ping the server, but it's no guarantee that the server is, or isn't, actually there and responding. The only thing you can do is try to send the message and see what happens.
Dave Kreskowiak Microsoft MVP - Visual Basic
Last Visit: 9-Dec-19 19:58 Last Update: 9-Dec-19 19:58