[Mono-list] Gtk print demo fails on Windows7 for all versions of Mono/Gtk

Robert Jordan robertj at gmx.net
Fri Sep 9 08:52:55 EDT 2011


On 09.09.2011 13:06, Doug Blank wrote:
> On Fri, Sep 9, 2011 at 3:34 AM, Elmar Haneke<elmar at haneke.de>  wrote:
>>
>>
>> Am 08.09.2011 20:06, schrieb Doug Blank:
>>
>>> Wow... nothing. No activity in the bug tracker. No response here.
>>> Maybe someone can make some guesses about the issue, or why I can't
>>> get any comments:
>>
>> Perhaps you can find an solution in
>> https://bugzilla.novell.com/show_bug.cgi?id=380675
>
> Yes! Thank you, thank you, thank you!
>
> It turns out that if you want to use Gtk.PrintOperation, your Main
> function, wherever it is, must have the [STAThread] attribute.
>
> I've been using Mono and Gtk# for a year now without this (just using
> Gtk.Application.Invoke for to run in the correct thread), but Printing
> appears to require STAThread. (My application is actually written in

The printing support is invoking native Windows functions,
and some of them need a STA thread.

> IronPython, which would be problematic as there is no way to set this
> attribute, and so there appears to be no way to have a pure IronPython
> app that prints in Windows. But this is easily remedied by creating a
> little C# wrapper).

You don't need a wrapper if you translate this to IronPython:

// entry point
static void Main (string[] args)
{
	// create a STA thread
	Thread t = new Thread(delegate {
	   RealMain(args);
	});
	t.SetApartmentState(ApartmentState.STA);
	t.Start();
	t.Join();
}

static void RealMain(string[] args)
{
	// do stuff you've done in main before
}

Robert



More information about the Mono-list mailing list