[Gtk-sharp-list] Strange Tree Model behavior (Multi-Threading)
Michael Fasolino
Michael_Fasolino at raytheon.com
Thu Jun 14 10:23:26 EDT 2007
Alright, so after some more debugging, it appears that the problem wasn’t
just a Multi-threading one. In my code one of the first things that I did
on the newly spawned thread was to make some calls into the unmanaged
environment. The parameter lists of one of my dllExport/dllImport pairs
were not matching. For some reason the compiler did not catch this, and
when I was running the app without debugging it seemed like it was working
fine. It was only when I ran the debugger that it caused the GetValue
function to return null. The only thing that I can think of is that some
memory necessary to the Models was being overwritten by the bad parameter
list.
So, my initial problem is solved! But, since we are on the subject of
multithreading, I am having a problem that I had not chased down yet. It
is that after the second thread is spawned when I hit the ‘X’ to close the
app it becomes unresponsive. It seems like the second thread is not
getting cleaned up properly. Here is what I am doing so far.
James, I implemented the code that you suggested like so:
GLib.Thread.Init();
Gdk.Threads.Init();
Application.Init();
Gdk.Threads.Enter();
...
//Some random setup stuff here (models, combo boxes ect). Should I remove
//this code and place it somewhere else?
...
//I have tried spawning this thread several places, this is just the
latest
System.Threading.Thread t = new System.Threading.Thread(new
System.Threading.ThreadStart(RecieveLoop));
t.Start();
try
{
Application.Run();
}
finally
{
Gdk.Threads.Leave();
}
When I try to close the window, the delete event gets fired, and then it
just seems to hang. I am assuming that I need to do something here, but
am not quite sure what it is.
public void on_MainWindow_delete_event(object o, DeleteEventArgs args)
{
//This bool causes the spawned thread to fall out of its infinate loop
CoeTools.KillRecieverThread = true;
System.Threading.Thread.Sleep(100);
Application.Quit();
args.RetVal = true;
}
Thanks for the help!
"James Talton" <talton at gmail.com>
06/12/2007 02:10 PM
To
"Michael Fasolino" <Michael_Fasolino at raytheon.com>
cc
gtk-sharp-list at ximian.com
Subject
Re: [Gtk-sharp-list] Strange Tree Model behavior (Multi-Threading)
I was seeing weird behavior on Windows with GTK and getting random
exceptions. From some other discussions on this mailing list I did the
following:
Glib.Thread.Init();
Gdk.Threads.Init();
Application.Init();
Gdk.Threads.Enter();
try
{
Application.Run();
}
finally
{
Gdk.Threads.Leave();
}
See if that fixes your problem. If it does, please let us know.
If it does not fix your problem, put a breakpoint where you call GetValue,
open up the threads window and make sure your calls are being done on the
main thread.
- James
On 6/12/07, Michael Fasolino <Michael_Fasolino at raytheon.com> wrote:
All,
Upon further exploration this seems to be a Multi-Threading problem as the
GetValue calls are work fine while debugging until I kick off a second
thread. I am still stumped as to why this will not work while I am
debugging and work fine while I am running with without debugging. I have
gone through the multithreading tutorial on the Mono page and it looks
like I am setting everything up the same as suggested.
Does anyone have any ideas?
Thanks in advance.
Michael Fasolino <Michael_Fasolino at raytheon.com >
Sent by: gtk-sharp-list-bounces at lists.ximian.com
06/07/2007 02:08 PM
To
gtk-sharp-list at ximian.com
cc
Subject
[Gtk-sharp-list] Strange Tree Model behavior
This seems really weird to me, but if figured that I would throw it out
and see if anyone else had seen anything like it. I am using Visual
Studio 2005 for my development environment. When I run my program in
debug mode the <Model>.GetValue calls seems to all return null. I am not
sure if the problem is with the models or with the GetValue function. Is
there an easy way to view a model's contents when debugging without using
the GetValue function?
I am at a loss as to what would be causing this. When I run the program
without debugging everything works fine.
Any help would be appreciated! Thanks!
Michael _______________________________________________
Gtk-sharp-list maillist - Gtk-sharp-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
_______________________________________________
Gtk-sharp-list maillist - Gtk-sharp-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/gtk-sharp-list/attachments/20070614/975e0456/attachment-0001.html
More information about the Gtk-sharp-list
mailing list