[Gtk-sharp-list] Issue with Mono/GTK# app after threading (NewB)

John Meadows john at meadowsonline.com
Thu Jul 14 21:21:18 EDT 2005


I seem to have found a workaround, but I am still mystified; my original
thread (that causes issues) creates an object that has code that
basically just loops over a text file, extracts filepaths and copies the
specified files to a USB drive.

On a whim I took the code out of this object, and ran it inline in the
thread, and the problem went away; In addition to using the
ThreadNotify, is there anything else that I need to do to run methods in
an object as opposed to the window that runs the thread? I must be
missing something very obvious!

Paulo Pires wrote:

>Try reading about Gtk.ThreadNotify
>This topic should be a must-know when starting to write threaded Gtk#
>Paulo Pires
>Ter, 2005-07-12 às 05:44 -0400, John Meadows escreveu:
>>I am working on my first application written in Gnome/GTK# and mono
>>1.1.8 / Monodevelop; and I have run into an issue (if this is a NewB
>>issue, I apologize in advance).
>>This application has a couple of methods that are run via threads
>>(basically for filecopying, as my app. is a utility for managing MP3
>>files on my MP3 player), and I have tried to use the examples I have
>>seen online. Everything seems to work OK, but after I run one of these
>>threaded methods the first time I see one of the following issues:
>>1. If I display a FileSelection widget it comes up, but the text inside
>>the widget (the list of files basically) is not visible, even though it
>>appears to be there (as I have some debug code that fires off  a line to
>>the console whenever a file is selected, so I think something is there
>>even if it is not displaying)
>>2. The main window of my application also uses a Treeview control. In a
>>manner similar to #1 above, after running one of my threaded methods
>>once, if I run a method to populate the treeview, neither the column
>>headings or the test for the items in the Treeview appear (although
>>again I have debug code writing to the console that shows there are
>>items in the Treeview; it's just the text that is not appearing properly).
>>I am not sure where to go with this from a debugging point of view. I
>>have put some sample code below, as maybe the issue is there, but I
>>don't know, and of course I did not want to post everything. Is there
>>some other refresh I need to call?
>>Any suggestions on what to try would be most appreciated!! Thanks in
>>Here's some code
>>//copy single file to player
>>    void CopyFileToPlayer (object sender, EventArgs a)
>>    {
>>        clearLabel(); // resets status labels on window
>>        lblStatus.Text = "File Copying in Progress...";
>>        buttonCopySingle.Sensitive = false;
>>        Thread oThread = new Thread(new ThreadStart(runSingleCopyThread));
>>        oThread.Start();
>>        notify = new ThreadNotify (new ReadyEvent (ready));
>>        while (!oThread.IsAlive);
>>    }
>>the method above calls:
>>//copy single file from playlist to player
>>private void runSingleCopyThread()
>>        fc = new FileCommands(); //this is an assembly  use for copying
>>the MP3 files
>>        lblStatus.Text = "File Copying in Progress...";
>>        fc.currentTrackFile = currentTrack;
>>        fc.mp3PlayerPath = txtPlayerPath.Text +
>>        fc.copyFile();
>>        if(fc.oppStatus != "Copying Files...")
>>        {
>>            lblStatus.Text = fc.oppStatus;
>>        }
>>        notify.WakeupMain ();
>>    }
>>The notification method is:
>>//called when file copying threads are done
>>void ready ()
>>     buttonCopy.Sensitive = true;
>>     buttonCopySingle.Sensitive = true;
>>     lblStatus.Text = fc.oppStatus + ": " + fc.fileCopyCount  + "
>>file(s) Copied";
>>     this.ShowAll();
>> }
>>Gtk-sharp-list maillist  -  Gtk-sharp-list at lists.ximian.com

More information about the Gtk-sharp-list mailing list