If you're demanding binaries for Linux, you should ask in your distribution forums/mailinglists.

If other OS, we're asking for community contributions to bring those for the final 3.0 release.

PS: Next time try to not hijack threads ;)

On 07/11/12 01:37, Gustavo Rubio wrote:
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]
<mailto:[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]>
        <mailto:[email protected].__us
        <mailto:[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]
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

Reply via email to