Hey guys, I'm writing a fairly large project (by my standards), and have two processes that are interacting. My .dll which is interfacing with hardware is raising events, which are caught by my main program, running on a windows form.
I'm using the following piece of code to invoke the event on the form thread, so I can display the results:
void
{
postDataReceived(e);
}
//Do something on the form
Now, 95% of the time, this code works fine. However, once in a while, I get the error:
System.ArgumentOutOfRangeException was unhandled Message="Index and length must refer to a location within the string.\r\nParameter name: length" Source="System.Windows.Forms" ParamName="length" StackTrace: at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) at myProgram.Form1.postDataReceived(DataReceivedEventArgs e) at myProgram.Form1.ComLib_DataReceived(Object sender, DataReceivedEventArgs e) at myLibrary.ComLib.DataReceivedEventHandler.Invoke(Object sender, DataReceivedEventArgs e) at myLibrary.ComLib.serialPort1_OnDataReceived(Object sender, SerialDataReceivedEventArgs e) in C:\Users\****\Documents\Visual Studio 2008\Projects\myLibrary\myLibrary\Class1.cs:line 223 at System.IO.Ports.SerialPort.CatchReceivedEvents(Object src, SerialDataReceivedEventArgs e) at System.IO.Ports.SerialStream.EventLoopRunner.CallReceiveEvents(Object state) at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state) InnerException:
Note that my DataReceivedEventArgs is just two ints and a string. And I know the string is not being accessed out of range. It isn't my code (I strongly believe) but rather something else. It's so wierd that it runs for a while, than crashes, or sometimes crashes the very first time. I've no idea...
Can anyone give me a possible cause and/or solution? It would be greatly appreciated;