|
Hi Arnold
You've already found the problem: you should never block the UI thread.
Put the call to comPortSendAndReceive in a new thread and let the UI thread continue pumping messages.
Also, using Sleep and Interrupt is a fairly nasty way to synchronize your threads. You might consider using a WaitHandle , probably an AutoResetEvent , instead. This has a Wait overload that takes a timeout, so you don't need a timer any more.
Nick
----------------------------------
Be excellent to each other
|
|
|
|
|
Thanks for your input. So basically, it is impossible to write an updateGuiImmediatelyWithTheWrongThread()-method?
|
|
|
|
|
arnold_w wrote: it is impossible to write an updateGuiImmediatelyWithTheWrongThread()-method?
Yes, windows controls must be used from the thread that created them: the UI thread.
I think the way to do this is to implement a queue. When the button is pressed, put a command in the queue and let the UI thread return. Then have a background thread that takes commands from the queue and processes them. You don't want to create a thread for each command. Then publish an event or two for the UI to listen to, and use them to report back progress and completion status.
If you want professional advice with this, or someone to write it for you, please use the email link below this message to contact me directly.
If you want to learn about multi-threading, there is an excellent ( free ) ebook by Joseph Albahari here[^].
Nick
----------------------------------
Be excellent to each other
|
|
|
|
|
Ok, thanks for your advice and the useful link.
|
|
|
|
|
Dear Friends,
I created a dataset and it contains value. For programming reason I assigned the dataset to a object variable
Now my problem to convert this objects variable back to dataset.
When I tried I get invalid type conversion.
Kindly give me your suggestion.
Thanks in advance
Regards
Santhosh
|
|
|
|
|
Did you try this?
DataSet dataset = myObject as DataSet;
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Thanks for help but I get object reference not set - error
|
|
|
|
|
First, don't vote posts a 1 if the person is trying to help you. That will do nothing but keep people from trying to help you in the future.
Second, if you want help, you're going to have to be a LOT more descriptive. What object threw that exception? Have you tried using your debugger?
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Hi,
I need to specify polygon(s) based on gps coordinates and calculate if a gps position is inside the polygon or not. any idea how to do it?
I found a method where polygons can be specified based on Points (integer) but gps coordinates are float.
will really appreciate
regards,
rnv
|
|
|
|
|
Have a look at the graphics class, the DrawPolygon method is overloaded. This first takes an array of Points (ints), the second takes an array of PointFs (floats).
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Expect everything to be hard and then enjoy the things that come easy. (code-frog)
|
|
|
|
|
There are 2 standard algorithms for calculating if a given point falls inside a polygon (see here[^]) The ray casting is probably the simplest. You will need to read up on how to calculate the intersection points of lines. Watch out for the special cases, such as when the point falls exactly on one of the vertices or edges, or if the ray you cast exactly crosses a vertex.
.net 3.5 has a System.Windows.Shapes.Polygon class which contains a Points member, which holds a collection of System.Windows.Point objects which use 2 doubles to store the point. These classes are for WPF drawing though, so if you are only interested in the calculations and don't plan on drawing the shapes, it is probably way more complex (and larger) than you need.
Best bet is probably to define your own Vertex class which holds 2 double values and your own Polygon class which holds a collection of Vertex objects.
Simon
|
|
|
|
|
Look for the SQL Server 2008 Feature Pack - It contains a bunch of assemblies so you can use the new types in your .NET application (you don't need SQL Server to use the assemblies). Find the new SqlGeography object, create a polygon with it (It is OGC Standards compliant) and then perform an STIntersects with another SqlGeometry that represents your GPS point. It will tell you if your point is in the polygon or not. It also takes into account the curvature of the earth.
Something like this:
SqlGeometry polygon = SqlGeometry.STGeomFromText("POLYGON(( <polygon definition here> ))");
SqlGeometry point = SqlGeometry.STGeomFromTest("POINT( <point definition here> )");
if (polygon.STIntersects(point))
{
}
else
{
}
|
|
|
|
|
hi all,
i have a button control in normal windows form application and i have another application in which i placed a panel . I want to drag the button from one aplication and drop this button control to the panel of the another application.
can anybody help me to solve the problem.
Thanks & Regards
aiswarya.
|
|
|
|
|
You will have to look into dragging and dropping through Windows API.
Regards,
Thomas Stockwell
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.
Visit my Blog
|
|
|
|
|
Hi all,
I can delete the selected rows from datagridview by selecting the rows and pressing the del key:
SqlCommandBuilder cb_imp = new SqlCommandBuilder(myda);
myconn.Open();
myda.Update(mydt);
Bud what's the way to delete all rows without selecting???
Thanx.
|
|
|
|
|
Hello,
Well if you do not want to select all rows and then delete, then you can
implement that in Button Click or some menu selection.
Use this code to delete all the rows. You will have to manually loop through
the rows and delete them one by one.
<br />
for (int i = this.dataGridView1.Rows.Count - 2; i > -1; i--)<br />
this.dataGridView1.Rows.RemoveAt(i);<br />
I hope this will help.
Regards,
Allen Smith
ComponentOne LLC
www.componentone.com
|
|
|
|
|
Hi Allen,
This works well. thanx a lot
|
|
|
|
|
Hi,
anyone famliar with nunit-console.exe?
running tests of a dll works fine, but after the test summary is printed, I don't come back to the cmd, except by typing ctrl+c. This behaviour always occurs , ignoring test results.
Any idea?
...................................
Tests run: 75, Failures: 1, Not run: 0, Time: 236.123 seconds
Failures:
1) #failure info#
#stack trace#
^C
D:\Profiles\myname>
thanks in advance.
|
|
|
|
|
using the /nothread option helped, but i still don't know why :/
|
|
|
|
|
I need to check the status of all the hardware device in C#, if the device is present it should display yes otherwise no, please please any help me..
its very urgent..
|
|
|
|
|
vinaykskvs wrote: its very urgent..
Not really,
vinaykskvs wrote: if the device is present it should display yes
How do you know what devices should be present?
The idea of CP is YOU write some code, then when it fails someone helps you.
Bob
Ashfield Consultants Ltd
|
|
|
|
|
http://www.codeproject.com/KB/cs/HardwareHelper.aspx[^]
there is one sample application given above to enable/ disable the device based on the selection from the list. so that it will reflect in the device manager window.
but there is one more option "scan for hardware change" in device manager, i need to execute that command through c# code.
|
|
|
|
|
vinaykskvs wrote: I need to check the status of all the hardware device
What hardware device? Anything specific, or everything that anyone ever thought of hooking up to a computer?
vinaykskvs wrote: its very urgent
No, it's not. If it really was that urgent, you would pay someone to get the information instead of asking in a public forum.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
any device which are connected to computer through Serial port or parallel port.
see this link below.
http://www.codeproject.com/KB/cs/HardwareHelper.aspx[^]
for example i need to select any of the ports and execute the "scan for hardware changes" option provided in the device manager through C# code.
|
|
|
|
|
IMO this http://www.codeproject.com/KB/cs/HardwareHelper.aspx[^] article is clear enough, you just use your imagination to evolve it.
BTW, have you learn about Windows API? if not, i suggest you to learn it first.
dhaim
programming is a hobby that make some money as side effect
|
|
|
|