Speaking of, are there any binaries of GTK# 2.99 available? On Tue, Nov 6, 2012 at 6:53 PM, Andres G. Aragoneses <[email protected]>wrote:
> And a good tool to fix what just Joe brought up is: > > https://github.com/slluis/gui-**thread-check<https://github.com/slluis/gui-thread-check> > > This tool will, furthermore, be bundled by default in the next 2.99.1 > release (so one more incentive to upgrade ). > > > On 06/11/12 22:37, Joe Dluzen wrote: > >> Though I haven't run your code, my first guess would be threading >> issues. As with practically all GUI toolkits, components are not only >> not threadsafe, but code doing anything with the components must be >> invoked on the same thread, please see here: >> http://www.mono-project.com/**Responsive_Applications<http://www.mono-project.com/Responsive_Applications> >> >> In the code you have not posted, is anything started on new threads, or >> on the threadpool? If so, you'd need to Invoke() any and all update code >> to the GUI thread. All speculation right now, sorry. >> >> Joe >> >> >> On Tue, Nov 6, 2012 at 2:36 PM, Johnnie Odom <[email protected] >> <mailto:[email protected].**us <[email protected]>>> wrote: >> >> Hello Everyone, >> >> >> This is my first day on the mailing list, and as it is I have a >> question regarding some odd behavior I am encountering. >> >> >> I am writing an application on OS X 10.8 using C#, Mono 2.10.9 and >> MonoDevelop 3.0.4 (including the Designer views) that makes some >> simple changes to LDAP. As part of it, I decided to get fancy with >> GTK#. All is going well, except for one behavior. >> >> >> I have created a window class to display a progress bar and stop >> button. I have further created a function in this class to update >> the progress bar with a fraction and text message. In my code, I >> create a new instance of this window class when real work is >> happening in another class, and then populate it after every ten >> iterations of a foreach loop. >> >> >> My problem is that when the window is created FROM THE CLASS DOING >> REAL WORK, it displays neither the progress bar widget, nor the >> button. It displays only the window title and then white space >> below. Only this window displays this behavior -- several other >> windows that I create over the course of the application all display >> appropriately. >> >> >> If I instead create the progress bar window in Main.cs and call >> Show(), it will display just fine. I can even call the function to >> set its status from Main.cs and it will display correctly. >> >> >> I have tried creating the window in Main.cs and passing it to the >> class that does the real work later. I have tried creating it in >> other classes besides the one that does the work. In all cases the >> behavior is the same -- if the window is created and used solely in >> Main.cs it will display fine, but if it it ever invoked or created >> from anywhere else (whether or not it is created in another class or >> in Main.cs) it will display incorrectly. >> >> >> I have taken to using the debugger and break points to isolate the >> behavior. If I set a breakpoint immediately after the window is >> created, it is still blank -- that is, I do not think it is a case >> that the window is just not keeping pace with any updates I am >> sending. I have also compared the various values of the window >> objects and attributes when it is displayed (created and used solely >> in Main.cs) and when it is not (displayed in any other class) and >> they seem to be identical. >> >> >> So, I am at a loss, and I would appreciate any advice you might give. >> >> >> I can send any code you think would prove useful, but for now I am >> sending you the class where I am trying to call the window, and the >> contents of the window's code-behind. >> >> >> Thank you for any guidance you can give. >> >> >> Johnnie Odom >> >> Network Services >> >> School District of Escambia County >> >> >> **************** >> >> >> The function from the calling class: >> >> public string radiazerMain(string radiazerGroup, string >> radiazerProfile){ >> >> Progression MarathonBar = new Progression(); >> >> MarathonBar.Show(); >> >> string monologger = ""; >> >> string lastLine = "Radiazer completed current run." + >> Environment.NewLine; >> >> Array usersToModify = getGroupMembers(radiazerGroup)**; >> >> string[] radiusAttribs = new >> string[]{"dialupAccess","**radiusArapFeatures","** >> radiusArapSecurity","**radiusArapZoneAccess","**radiusAuthType","** >> radiusCallbackId","**radiusCallbackNumber","**radiusCalledStationId","** >> radiusCallingStationId","**radiusCheckItem","radiusClass"** >> ,"radiusClientIPAddress","**radiusExpiration","**radiusFilterId","** >> radiusFramedAppleTalkLink","**radiusFramedAppleTalkNetwork",** >> "radiusFramedAppleTalkZone","**radiusFramedCompression","** >> radiusFramedIPAddress","**radiusFramedIPNetmask","** >> radiusFramedIPXNetwork","**radiusFramedMTU","**radiusFramedProtocol","** >> radiusFramedRoute","**radiusFramedRouting","** >> radiusGroupName","radiusHint",**"radiusHuntgroupName","** >> radiusIdleTimeout","**radiusLoginIPHost","**radiusLoginLATGroup","** >> radiusLoginLATNode","**radiusLoginLATPort","**radiusLoginLATService","** >> radiusLoginService","**radiusLoginTCPPort","**radiusLoginTime","** >> radiusPasswordRetry","**radiusPortLimit","**radiusProfileDn","** >> radiusPrompt","**radiusProxyToRealm","**radiusRealm","** >> radiusReplicateToRealm","**radiusReplyItem","**radiusServiceType","** >> radiusSessionTimeout" >> > , > "radiusSimultaneousUse","**radiusStripUserName","** > radiusTerminationAction","**radiusTunnelAssignmentId","** > radiusTunnelClientEndpoint","**radiusTunnelMediumType","** > radiusTunnelPassword","**radiusTunnelPreference","** > radiusTunnelPrivateGroupId","**radiusTunnelServerEndpoint","** > radiusTunnelType","**radiusUserCategory","**radiusVSA"}; > >> >> >> LdapAttributeSet profileTemplate = >> LdapAttributeSetFiltered(**radiazerProfile, radiusAttribs); >> >> profileTemplate.Add(new LdapAttribute("**radiusProfileDn", >> radiazerProfile)); >> >> >> int totalUsersCount = usersToModify.Length; >> >> int currentUserCount = 0; >> >> int errorCount = 0; >> >> MarathonBar.Show(); >> >> >> foreach(string userToModify in usersToModify){ >> >> currentUserCount++; >> >> try{ >> >> monologger = monologger + radiazeModifyUser(**userToModify, >> profileTemplate); >> >> } >> >> catch(LdapException LdapFailure){ >> >> monologger = monologger + "User " + userToModify + " failed. Error >> is " + LdapFailure.ToString() + Environment.NewLine; >> >> errorCount++; >> >> } >> >> if(((currentUserCount % 10) == 0) || ((totalUsersCount - >> currentUserCount) < 10)){ >> >> MarathonBar.setProgress(((**double)currentUserCount / >> totalUsersCount), totalUsersCount , currentUserCount, errorCount, >> userToModify); >> >> } >> >> if(MarathonBar.cancelFromUser)**{ >> >> lastLine = "Radiazer cancelled by user." + Environment.NewLine; >> >> break; >> >> } >> >> } >> >> >> MarathonBar.Destroy(); >> >> monologger = monologger + lastLine; >> >> return monologger; >> >> } >> >> >> ************* >> >> >> The Code-Behind: >> >> >> using System; >> >> >> namespace Radiazer2 >> >> { >> >> public partial class Progression : Gtk.Window >> >> { >> >> >> public bool cancelFromUser = false; >> >> >> public Progression () : >> >> base(Gtk.WindowType.Toplevel) >> >> { >> >> this.Build (); >> >> } >> >> >> public void setProgress(double fractionOfProgress, int totalUnits, >> int finishedUnits, int errorUnits, string finishedUser){ >> >> this.progressIndicator.**Fraction = fractionOfProgress; >> >> this.progressIndicator.Text = "Completed " + finishedUnits + " of " >> + totalUnits + " with " + errorUnits + " errors. Current user is " + >> finishedUser + "."; >> >> } >> >> >> protected void OnStopUserClicked (object sender, EventArgs e) >> >> { >> >> cancelFromUser = true; >> >> } >> >> > > > ______________________________**_________________ > Gtk-sharp-list maillist - > [email protected].**com<[email protected]> > http://lists.ximian.com/**mailman/listinfo/gtk-sharp-**list<http://lists.ximian.com/mailman/listinfo/gtk-sharp-list> > -- *Gustavo Rubio* MX: (664) 608-0659 US: (619) 502-9192 http://42ideas.mx
_______________________________________________ Gtk-sharp-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
