[Gtk-sharp-list] Issue with Mono/GTK# app after threading (NewB)
Paulo Pires
paulo.pires at vodafone.pt
Thu Jul 14 05:55:07 EDT 2005
Try reading about Gtk.ThreadNotify
This topic should be a must-know when starting to write threaded Gtk#
programs.
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
> advance!
>
> 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 +
> System.IO.Path.DirectorySeparatorChar.ToString();
> 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
> http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
More information about the Gtk-sharp-list
mailing list