<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://aspadvice.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Olivier's .NET Blog</title><link>http://aspadvice.com/blogs/oliviers_net_blog/default.aspx</link><description>God invented the cat so that men could play with tigers</description><dc:language>en</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>Useful memo: Windows messages</title><link>http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx</link><pubDate>Wed, 25 Oct 2006 13:31:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:23645</guid><dc:creator>odalet</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/oliviers_net_blog/comments/23645.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/oliviers_net_blog/commentrss.aspx?PostID=23645</wfw:commentRss><description>&lt;p&gt;Grabbed from this url (may only contain most useful definitions): http://www.groupsrv.com/dotnet/about52848.html&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;WM_NULL                   = 0x0000,
&lt;br /&gt;
WM_CREATE                 = 0x0001,
&lt;br /&gt;
WM_DESTROY                = 0x0002,
&lt;br /&gt;
WM_MOVE                   = 0x0003,
&lt;br /&gt;
WM_SIZE                   = 0x0005,
&lt;br /&gt;
WM_ACTIVATE               = 0x0006,
&lt;br /&gt;
WM_SETFOCUS               = 0x0007,
&lt;br /&gt;
WM_KILLFOCUS              = 0x0008,
&lt;br /&gt;
WM_ENABLE                 = 0x000A,
&lt;br /&gt;
WM_SETREDRAW              = 0x000B,
&lt;br /&gt;
WM_SETTEXT                = 0x000C,
&lt;br /&gt;
WM_GETTEXT                = 0x000D,
&lt;br /&gt;
WM_GETTEXTLENGTH          = 0x000E,
&lt;br /&gt;
WM_PAINT                  = 0x000F,
&lt;br /&gt;
WM_CLOSE                  = 0x0010,
&lt;br /&gt;
WM_QUERYENDSESSION        = 0x0011,
&lt;br /&gt;
WM_QUIT                   = 0x0012,
&lt;br /&gt;
WM_QUERYOPEN              = 0x0013,
&lt;br /&gt;
WM_ERASEBKGND             = 0x0014,
&lt;br /&gt;
WM_SYSCOLORCHANGE         = 0x0015,
&lt;br /&gt;
WM_ENDSESSION             = 0x0016,
&lt;br /&gt;
WM_SHOWWINDOW             = 0x0018,
&lt;br /&gt;
WM_CTLCOLOR               = 0x0019,
&lt;br /&gt;
WM_WININICHANGE           = 0x001A,
&lt;br /&gt;
WM_SETTINGCHANGE          = 0x001A,
&lt;br /&gt;
WM_DEVMODECHANGE          = 0x001B,
&lt;br /&gt;
WM_ACTIVATEAPP            = 0x001C,
&lt;br /&gt;
WM_FONTCHANGE             = 0x001D,
&lt;br /&gt;
WM_TIMECHANGE             = 0x001E,
&lt;br /&gt;
WM_CANCELMODE             = 0x001F,
&lt;br /&gt;
WM_SETCURSOR              = 0x0020,
&lt;br /&gt;
WM_MOUSEACTIVATE          = 0x0021,
&lt;br /&gt;
WM_CHILDACTIVATE          = 0x0022,
&lt;br /&gt;
WM_QUEUESYNC              = 0x0023,
&lt;br /&gt;
WM_GETMINMAXINFO          = 0x0024,
&lt;br /&gt;
WM_PAINTICON              = 0x0026,
&lt;br /&gt;
WM_ICONERASEBKGND         = 0x0027,
&lt;br /&gt;
WM_NEXTDLGCTL             = 0x0028,
&lt;br /&gt;
WM_SPOOLERSTATUS          = 0x002A,
&lt;br /&gt;
WM_DRAWITEM               = 0x002B,
&lt;br /&gt;
WM_MEASUREITEM            = 0x002C,
&lt;br /&gt;
WM_DELETEITEM             = 0x002D,
&lt;br /&gt;
WM_VKEYTOITEM             = 0x002E,
&lt;br /&gt;
WM_CHARTOITEM             = 0x002F,
&lt;br /&gt;
WM_SETFONT                = 0x0030,
&lt;br /&gt;
WM_GETFONT                = 0x0031,
&lt;br /&gt;
WM_SETHOTKEY              = 0x0032,
&lt;br /&gt;
WM_GETHOTKEY              = 0x0033,
&lt;br /&gt;
WM_QUERYDRAGICON          = 0x0037,
&lt;br /&gt;
WM_COMPAREITEM            = 0x0039,
&lt;br /&gt;
WM_GETOBJECT              = 0x003D,
&lt;br /&gt;
WM_COMPACTING             = 0x0041,
&lt;br /&gt;
WM_COMMNOTIFY             = 0x0044 ,
&lt;br /&gt;
WM_WINDOWPOSCHANGING      = 0x0046,
&lt;br /&gt;
WM_WINDOWPOSCHANGED       = 0x0047,
&lt;br /&gt;
WM_POWER                  = 0x0048,
&lt;br /&gt;
WM_COPYDATA               = 0x004A,
&lt;br /&gt;
WM_CANCELJOURNAL          = 0x004B,
&lt;br /&gt;
WM_NOTIFY                 = 0x004E,
&lt;br /&gt;
WM_INPUTLANGCHANGEREQUEST = 0x0050,
&lt;br /&gt;
WM_INPUTLANGCHANGE        = 0x0051,
&lt;br /&gt;
WM_TCARD                  = 0x0052,
&lt;br /&gt;
WM_HELP                   = 0x0053,
&lt;br /&gt;
WM_USERCHANGED            = 0x0054,
&lt;br /&gt;
WM_NOTIFYFORMAT           = 0x0055,
&lt;br /&gt;
WM_CONTEXTMENU            = 0x007B,
&lt;br /&gt;
WM_STYLECHANGING          = 0x007C,
&lt;br /&gt;
WM_STYLECHANGED           = 0x007D,
&lt;br /&gt;
WM_DISPLAYCHANGE          = 0x007E,
&lt;br /&gt;
WM_GETICON                = 0x007F,
&lt;br /&gt;
WM_SETICON                = 0x0080,
&lt;br /&gt;
WM_NCCREATE               = 0x0081,
&lt;br /&gt;
WM_NCDESTROY              = 0x0082,
&lt;br /&gt;
WM_NCCALCSIZE             = 0x0083,
&lt;br /&gt;
WM_NCHITTEST              = 0x0084,
&lt;br /&gt;
WM_NCPAINT                = 0x0085,
&lt;br /&gt;
WM_NCACTIVATE             = 0x0086,
&lt;br /&gt;
WM_GETDLGCODE             = 0x0087,
&lt;br /&gt;
WM_SYNCPAINT              = 0x0088,
&lt;br /&gt;
WM_NCMOUSEMOVE            = 0x00A0,
&lt;br /&gt;
WM_NCLBUTTONDOWN          = 0x00A1,
&lt;br /&gt;
WM_NCLBUTTONUP            = 0x00A2,
&lt;br /&gt;
WM_NCLBUTTONDBLCLK        = 0x00A3,
&lt;br /&gt;
WM_NCRBUTTONDOWN          = 0x00A4,
&lt;br /&gt;
WM_NCRBUTTONUP            = 0x00A5,
&lt;br /&gt;
WM_NCRBUTTONDBLCLK        = 0x00A6,
&lt;br /&gt;
WM_NCMBUTTONDOWN          = 0x00A7,
&lt;br /&gt;
WM_NCMBUTTONUP            = 0x00A8,
&lt;br /&gt;
WM_NCMBUTTONDBLCLK        = 0x00A9,
&lt;br /&gt;
WM_KEYDOWN                = 0x0100,
&lt;br /&gt;
WM_KEYUP                  = 0x0101,
&lt;br /&gt;
WM_CHAR                   = 0x0102,
&lt;br /&gt;
WM_DEADCHAR               = 0x0103,
&lt;br /&gt;
WM_SYSKEYDOWN             = 0x0104,
&lt;br /&gt;
WM_SYSKEYUP               = 0x0105,
&lt;br /&gt;
WM_SYSCHAR                = 0x0106,
&lt;br /&gt;
WM_SYSDEADCHAR            = 0x0107,
&lt;br /&gt;
WM_KEYLAST                = 0x0108,
&lt;br /&gt;
WM_IME_STARTCOMPOSITION   = 0x010D,
&lt;br /&gt;
WM_IME_ENDCOMPOSITION     = 0x010E,
&lt;br /&gt;
WM_IME_COMPOSITION        = 0x010F,
&lt;br /&gt;
WM_IME_KEYLAST            = 0x010F,
&lt;br /&gt;
WM_INITDIALOG             = 0x0110,
&lt;br /&gt;
WM_COMMAND                = 0x0111,
&lt;br /&gt;
WM_SYSCOMMAND             = 0x0112,
&lt;br /&gt;
WM_TIMER                  = 0x0113,
&lt;br /&gt;
WM_HSCROLL                = 0x0114,
&lt;br /&gt;
WM_VSCROLL                = 0x0115,
&lt;br /&gt;
WM_INITMENU               = 0x0116,
&lt;br /&gt;
WM_INITMENUPOPUP          = 0x0117,
&lt;br /&gt;
WM_MENUSELECT             = 0x011F,
&lt;br /&gt;
WM_MENUCHAR               = 0x0120,
&lt;br /&gt;
WM_ENTERIDLE              = 0x0121,
&lt;br /&gt;
WM_MENURBUTTONUP          = 0x0122,
&lt;br /&gt;
WM_MENUDRAG               = 0x0123,
&lt;br /&gt;
WM_MENUGETOBJECT          = 0x0124,
&lt;br /&gt;
WM_UNINITMENUPOPUP        = 0x0125,
&lt;br /&gt;
WM_MENUCOMMAND            = 0x0126,
&lt;br /&gt;
WM_CTLCOLORMSGBOX         = 0x0132,
&lt;br /&gt;
WM_CTLCOLOREDIT           = 0x0133,
&lt;br /&gt;
WM_CTLCOLORLISTBOX        = 0x0134,
&lt;br /&gt;
WM_CTLCOLORBTN            = 0x0135,
&lt;br /&gt;
WM_CTLCOLORDLG            = 0x0136,
&lt;br /&gt;
WM_CTLCOLORSCROLLBAR      = 0x0137,
&lt;br /&gt;
WM_CTLCOLORSTATIC         = 0x0138,
&lt;br /&gt;
WM_MOUSEMOVE              = 0x0200,
&lt;br /&gt;
WM_LBUTTONDOWN            = 0x0201,
&lt;br /&gt;
WM_LBUTTONUP              = 0x0202,
&lt;br /&gt;
WM_LBUTTONDBLCLK          = 0x0203,
&lt;br /&gt;
WM_RBUTTONDOWN            = 0x0204,
&lt;br /&gt;
WM_RBUTTONUP              = 0x0205,
&lt;br /&gt;
WM_RBUTTONDBLCLK          = 0x0206,
&lt;br /&gt;
WM_MBUTTONDOWN            = 0x0207,
&lt;br /&gt;
WM_MBUTTONUP              = 0x0208,
&lt;br /&gt;
WM_MBUTTONDBLCLK          = 0x0209,
&lt;br /&gt;
WM_MOUSEWHEEL             = 0x020A,
&lt;br /&gt;
WM_PARENTNOTIFY           = 0x0210,
&lt;br /&gt;
WM_ENTERMENULOOP          = 0x0211,
&lt;br /&gt;
WM_EXITMENULOOP           = 0x0212,
&lt;br /&gt;
WM_NEXTMENU               = 0x0213,
&lt;br /&gt;
WM_SIZING                 = 0x0214,
&lt;br /&gt;
WM_CAPTURECHANGED         = 0x0215,
&lt;br /&gt;
WM_MOVING                 = 0x0216,
&lt;br /&gt;
WM_DEVICECHANGE           = 0x0219,
&lt;br /&gt;
WM_MDICREATE              = 0x0220,
&lt;br /&gt;
WM_MDIDESTROY             = 0x0221,
&lt;br /&gt;
WM_MDIACTIVATE            = 0x0222,
&lt;br /&gt;
WM_MDIRESTORE             = 0x0223,
&lt;br /&gt;
WM_MDINEXT                = 0x0224,
&lt;br /&gt;
WM_MDIMAXIMIZE            = 0x0225,
&lt;br /&gt;
WM_MDITILE                = 0x0226,
&lt;br /&gt;
WM_MDICASCADE             = 0x0227,
&lt;br /&gt;
WM_MDIICONARRANGE         = 0x0228,
&lt;br /&gt;
WM_MDIGETACTIVE           = 0x0229,
&lt;br /&gt;
WM_MDISETMENU             = 0x0230,
&lt;br /&gt;
WM_ENTERSIZEMOVE          = 0x0231,
&lt;br /&gt;
WM_EXITSIZEMOVE           = 0x0232,
&lt;br /&gt;
WM_DROPFILES              = 0x0233,
&lt;br /&gt;
WM_MDIREFRESHMENU         = 0x0234,
&lt;br /&gt;
WM_IME_SETCONTEXT         = 0x0281,
&lt;br /&gt;
WM_IME_NOTIFY             = 0x0282,
&lt;br /&gt;
WM_IME_CONTROL            = 0x0283,
&lt;br /&gt;
WM_IME_COMPOSITIONFULL    = 0x0284,
&lt;br /&gt;
WM_IME_SELECT             = 0x0285,
&lt;br /&gt;
WM_IME_CHAR               = 0x0286,
&lt;br /&gt;
WM_IME_REQUEST            = 0x0288,
&lt;br /&gt;
WM_IME_KEYDOWN            = 0x0290,
&lt;br /&gt;
WM_IME_KEYUP              = 0x0291,
&lt;br /&gt;
WM_MOUSEHOVER             = 0x02A1,
&lt;br /&gt;
WM_MOUSELEAVE             = 0x02A3,
&lt;br /&gt;
WM_CUT                    = 0x0300,
&lt;br /&gt;
WM_COPY                   = 0x0301,
&lt;br /&gt;
WM_PASTE                  = 0x0302,
&lt;br /&gt;
WM_CLEAR                  = 0x0303,
&lt;br /&gt;
WM_UNDO                   = 0x0304,
&lt;br /&gt;
WM_RENDERFORMAT           = 0x0305,
&lt;br /&gt;
WM_RENDERALLFORMATS       = 0x0306,
&lt;br /&gt;
WM_DESTROYCLIPBOARD       = 0x0307,
&lt;br /&gt;
WM_DRAWCLIPBOARD          = 0x0308,
&lt;br /&gt;
WM_PAINTCLIPBOARD         = 0x0309,
&lt;br /&gt;
WM_VSCROLLCLIPBOARD       = 0x030A,
&lt;br /&gt;
WM_SIZECLIPBOARD          = 0x030B,
&lt;br /&gt;
WM_ASKCBFORMATNAME        = 0x030C,
&lt;br /&gt;
WM_CHANGECBCHAIN          = 0x030D,
&lt;br /&gt;
WM_HSCROLLCLIPBOARD       = 0x030E,
&lt;br /&gt;
WM_QUERYNEWPALETTE        = 0x030F,
&lt;br /&gt;
WM_PALETTEISCHANGING      = 0x0310,
&lt;br /&gt;
WM_PALETTECHANGED         = 0x0311,
&lt;br /&gt;
WM_HOTKEY                 = 0x0312,
&lt;br /&gt;
WM_PRINT                  = 0x0317,
&lt;br /&gt;
WM_PRINTCLIENT            = 0x0318,
&lt;br /&gt;
WM_HANDHELDFIRST          = 0x0358,
&lt;br /&gt;
WM_HANDHELDLAST           = 0x035F,
&lt;br /&gt;
WM_AFXFIRST               = 0x0360,
&lt;br /&gt;
WM_AFXLAST                = 0x037F,
&lt;br /&gt;
WM_PENWINFIRST            = 0x0380,
&lt;br /&gt;
WM_PENWINLAST             = 0x038F,
&lt;br /&gt;
WM_APP                    = 0x8000,
&lt;br /&gt;
WM_USER                   = 0x0400,
&lt;br /&gt;
WM_REFLECT                = WM_USER + 0x1c00&amp;nbsp;
&lt;br /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx&amp;amp;;subject=Useful+memo%3a+Windows+messages" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx&amp;amp;;title=Useful+memo%3a+Windows+messages" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx&amp;amp;title=Useful+memo%3a+Windows+messages" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx&amp;amp;;title=Useful+memo%3a+Windows+messages" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx&amp;amp;;title=Useful+memo%3a+Windows+messages&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/10/25/Useful-memo_3A00_-Windows-messages.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=23645" width="1" height="1"&gt;</description></item><item><title>Impossible de lancer le debugger de Visual Studio 2005</title><link>http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx</link><pubDate>Fri, 01 Sep 2006 20:34:20 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:22313</guid><dc:creator>odalet</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/oliviers_net_blog/comments/22313.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/oliviers_net_blog/commentrss.aspx?PostID=22313</wfw:commentRss><description>&lt;p&gt;Le message d'erreur qui apparaît lorsque l'on lance un programme depuis Visual Studio 2005 (ou depuis une version Express) est, en français :&lt;strong&gt; Handle de liaison invalide&lt;/strong&gt; ; ce message correspond, en anglais à &lt;strong&gt;The binding handle is invalid&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Ce problème apparaît lorsque le service Terminal Server est désactivé. Il suffit donc de relancer ce service pour que tout rentre dans l'ordre.&lt;/p&gt; &lt;p&gt;Pour plus de détails, voir les posts suivants (en anglais) : &lt;/p&gt; &lt;p&gt;&lt;a href="https://blogs.msdn.com/habibh/archive/2005/11/10/491572.aspx"&gt;Troubleshooting the "The Binding Handle Is Invalid" error in Visual Studio 2005&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/greggm/archive/2006/01/04/509243.aspx"&gt;Explaining 'The Binding Handle Is Invalid'&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://kenno.wordpress.com/2006/06/25/the-binding-handle-is-invalid-error-in-visual-studio-2005/"&gt;“The Binding Handle Is Invalid” error in Visual Studio 2005&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx&amp;amp;;subject=Impossible+de+lancer+le+debugger+de+Visual+Studio+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx&amp;amp;;title=Impossible+de+lancer+le+debugger+de+Visual+Studio+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx&amp;amp;title=Impossible+de+lancer+le+debugger+de+Visual+Studio+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx&amp;amp;;title=Impossible+de+lancer+le+debugger+de+Visual+Studio+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx&amp;amp;;title=Impossible+de+lancer+le+debugger+de+Visual+Studio+2005&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/09/01/Impossible-de-lancer-le-debugger-de-Visual-Studio-2005.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=22313" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/oliviers_net_blog/archive/tags/.net/default.aspx">.net</category></item><item><title>Saving the state of a Graphics object</title><link>http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx</link><pubDate>Wed, 23 Aug 2006 16:04:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:22018</guid><dc:creator>odalet</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/oliviers_net_blog/comments/22018.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/oliviers_net_blog/commentrss.aspx?PostID=22018</wfw:commentRss><description>&lt;p&gt;Today I discovered a new class : &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.drawing2d.graphicscontainer.aspx"&gt;GraphicsContainer&lt;/a&gt;; it allows you to save the state of aGraphics object (transformation, clipping region, and rendering properties) and to restore it later. &lt;/p&gt; &lt;p&gt;This class is used in conjunction with 2 pairs of methods belonging to the Graphics class: &lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.graphics.begincontainer.aspx"&gt;BeginContainer&lt;/a&gt; saves the state of the graphics object (and returns a GraphicsContainer object), &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.graphics.endcontainer.aspx"&gt;EndContainer&lt;/a&gt; restores the state (when provided with a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.drawing2d.graphicscontainer.aspx"&gt;GraphicsContainer&lt;/a&gt; object). MSDN provides a sample here: &lt;a href="http://msdn2.microsoft.com/en-us/library/azdschfw.aspx"&gt;http://msdn2.microsoft.com/en-us/library/azdschfw.aspx&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;There exists overloads of &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.graphics.begincontainer.aspx"&gt;BeginContainer&lt;/a&gt; that accept two rectangles and unit allowing the Graphics object to be applied a new transformation after its state is saved.&lt;/p&gt; &lt;p&gt;In the same maneer, but in a simpler way, the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.graphics.save.aspx"&gt;Graphics.Save&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/system.drawing.graphics.restore.aspx"&gt;Graphics.Restore&lt;/a&gt; methods do the same job (Honestly, I don't understand why these two pairs of methods coexist...)&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;This led me to write a little helper class allowing to save/restore a Graphics with the &lt;font color="blue"&gt;using&lt;/font&gt; syntax.&lt;/p&gt; &lt;p&gt;Here is how to use this class (it is just a rewritten version of the MSDN sample):&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OnPaint(System.Windows.Forms.PaintEventArgs e)
{
    Graphics g = e.Graphics;

    &lt;span style="color:#008000;"&gt;// Define transformation for container.&lt;/span&gt;
    RectangleF src = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; RectangleF(0f, 0f, 200f, 200f);
    RectangleF dest = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; RectangleF(100f, 100f, 150f, 150f);

    &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (PaintHelper.SaveGraphics(g, dest, src, GraphicsUnit.Pixel))
    {
        &lt;span style="color:#008000;"&gt;// Fill red rectangle in container.&lt;/span&gt;
        g.FillRectangle(Brushes.Red, 0.0F, 0.0F, 200.0F, 200.0F);
    }

    &lt;span style="color:#008000;"&gt;// Fill untransformed rectangle with green.&lt;/span&gt;
    g.FillRectangle(Brushes.Green, 0.0F, 0.0F, 200.0F, 200.0F);
}&lt;/font&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;And the source code for the PaintHelper class:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;
&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Drawing;
&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Drawing.Drawing2D;

&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; Delta.Internals
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; PaintHelper
    {
        &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; GraphicsBackup : IDisposable
        {
            &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Graphics graphics = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;
            &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; GraphicsContainer container = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;

            &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; GraphicsBackup(Graphics g)
            {
                Init(g);
                container = g.BeginContainer();
            }

            &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; GraphicsBackup(Graphics g, Rectangle dest, Rectangle src, GraphicsUnit unit)
            {
                container = g.BeginContainer(dest, src, unit);
            }

            &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; GraphicsBackup(Graphics g, RectangleF dest, RectangleF src, GraphicsUnit unit)
            {
                container = g.BeginContainer(dest, src, unit);
            }

            &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Init(Graphics g)
            {
                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (g == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException("&lt;span style="color:#8b0000;"&gt;g&lt;/span&gt;");
                graphics = g;
            }

            &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Dispose()
            {
                graphics.EndContainer(container);
            }
        }

        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; IDisposable SaveGraphics(Graphics g)
        {
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GraphicsBackup(g);
        }

        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; IDisposable SaveGraphics(Graphics g,
            Rectangle dest, Rectangle src, GraphicsUnit unit)
        {
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GraphicsBackup(g, dest, src, unit);
        }

        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; IDisposable SaveGraphics(Graphics g,
            RectangleF dest, RectangleF src, GraphicsUnit unit)
        {
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; GraphicsBackup(g, dest, src, unit);
        }
    }
}&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;Hope this helps.&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx&amp;amp;;subject=Saving+the+state+of+a+Graphics+object" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx&amp;amp;;title=Saving+the+state+of+a+Graphics+object" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx&amp;amp;title=Saving+the+state+of+a+Graphics+object" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx&amp;amp;;title=Saving+the+state+of+a+Graphics+object" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx&amp;amp;;title=Saving+the+state+of+a+Graphics+object&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/08/23/Saving-the-state-of-a-Graphics-object.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=22018" width="1" height="1"&gt;</description></item><item><title>Thread safe singleton pattern with C#: easy!</title><link>http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx</link><pubDate>Tue, 25 Jul 2006 21:59:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:19932</guid><dc:creator>odalet</dc:creator><slash:comments>1</slash:comments><comments>http://aspadvice.com/blogs/oliviers_net_blog/comments/19932.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/oliviers_net_blog/commentrss.aspx?PostID=19932</wfw:commentRss><description>&lt;p&gt;&lt;font face="Arial" size="2"&gt;Read here: &lt;a title="http://www.dofactory.com/Patterns/PatternSingleton.aspx" href="http://www.dofactory.com/Patterns/PatternSingleton.aspx"&gt;http://www.dofactory.com/Patterns/PatternSingleton.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;Here is the classical maneer a thread-safe singleton is written in C#:&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MySingleton
{    
    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; MySingleton instance;    
    &lt;span style="color:#008000;"&gt;// Lock synchronization object    &lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; syncLock = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;();    
    
    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; MySingleton() { DoSomething(); }    
    
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; MySingleton Instance    
    {        
        &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;        
        {            
            &lt;span style="color:#008000;"&gt;// Support multithreaded applications            &lt;/span&gt;
            &lt;span style="color:#008000;"&gt;// through 'Double checked locking'            &lt;/span&gt;
            &lt;span style="color:#008000;"&gt;// pattern which (once the instance            &lt;/span&gt;
            &lt;span style="color:#008000;"&gt;// exists) avoids locking each            &lt;/span&gt;
            &lt;span style="color:#008000;"&gt;// time the method is invoked            &lt;/span&gt;
            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (instance == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)            
            {                
                &lt;span style="color:#0000ff;"&gt;lock&lt;/span&gt; (syncLock)                
                {                    
                    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (instance == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)                        
                        instance = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MySingleton();                
                }            
            }            
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; instance;        
        }    
    }
}&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;And now, the ".NET" way:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MySingleton&lt;br&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#008000;"&gt;// Static members are lazily initialized.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#008000;"&gt;// .NET guarantees thread safety for&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#008000;"&gt;// static initialization&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; MySingleton instance =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MySingleton();&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#008000;"&gt;// Constructor (private)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; MySingleton() { DoSomething(); }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; Instance { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; instance; } }&lt;br&gt;}&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Arial" size="2"&gt;This works because "&lt;font color="blue"&gt;private&lt;/font&gt; &lt;font color="blue"&gt;static&lt;/font&gt; &lt;font color="blue"&gt;readonly&lt;/font&gt;" involves:&lt;/font&gt; 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font face="Arial" size="2"&gt;lazy initialization&lt;/font&gt; 
&lt;li&gt;&lt;font face="Arial" size="2"&gt;thread safety guaranteed by .NET for static initializations.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;font face="Arial" size="2"&gt;Ain't it beautiful?&lt;/font&gt;&lt;pre&gt;&lt;br&gt;&lt;/pre&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx&amp;amp;;subject=Thread+safe+singleton+pattern+with+C%23%3a+easy!" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx&amp;amp;;title=Thread+safe+singleton+pattern+with+C%23%3a+easy!" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx&amp;amp;title=Thread+safe+singleton+pattern+with+C%23%3a+easy!" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx&amp;amp;;title=Thread+safe+singleton+pattern+with+C%23%3a+easy!" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx&amp;amp;;title=Thread+safe+singleton+pattern+with+C%23%3a+easy!&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/Thread-safe-singleton-pattern-with-C_23003A00_-easy_2100_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=19932" width="1" height="1"&gt;</description></item><item><title>How to access real GAC files</title><link>http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx</link><pubDate>Tue, 25 Jul 2006 21:54:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:19931</guid><dc:creator>odalet</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/oliviers_net_blog/comments/19931.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/oliviers_net_blog/commentrss.aspx?PostID=19931</wfw:commentRss><description>&lt;p&gt;&lt;font face="Arial"&gt;Read here: (&lt;a href="http://weblogs.asp.net/jkey/archive/2003/02/25/3006.aspx" title="Using Explorer to get to physical files in the GAC"&gt;Using Explorer to get to physical files in the GAC http://weblogs.asp.net/jkey/archive/2003/02/25/3006.aspx&lt;/a&gt;), &lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;an easy but really efficient trick to browse real files in the GAC:&lt;/font&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;open a DOS prompt and type&lt;/font&gt; &lt;b&gt;&lt;font face="Courier New"&gt;subst G: %windir%\assembly&lt;/font&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="Courier New"&gt;&lt;font face="Arial"&gt;If explorer is opened, close it and re-open it. Browse to G:, and voilà, you can now see the physical structure of the GAC!&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;font face="Arial"&gt;Be careful, you'd better be sure of you before playing with the internals of the GAC...&lt;/font&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx&amp;amp;;subject=How+to+access+real+GAC+files" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx&amp;amp;;title=How+to+access+real+GAC+files" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx&amp;amp;title=How+to+access+real+GAC+files" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx&amp;amp;;title=How+to+access+real+GAC+files" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx&amp;amp;;title=How+to+access+real+GAC+files&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/07/25/How-to-access-real-GAC-files.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=19931" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/oliviers_net_blog/archive/tags/.net/default.aspx">.net</category></item><item><title>Repairing Visual Studio .NET 2005</title><link>http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx</link><pubDate>Wed, 07 Jun 2006 20:55:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:18501</guid><dc:creator>odalet</dc:creator><slash:comments>2</slash:comments><comments>http://aspadvice.com/blogs/oliviers_net_blog/comments/18501.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/oliviers_net_blog/commentrss.aspx?PostID=18501</wfw:commentRss><description>&lt;p&gt;If
you had installed Visual Studio .NET 2005 Beta1, you may run into
problems using the final release (or the Beta2). More specifically, the
IDE may refuse to load the “Common IDE Package” at startup, or it may
be unable to show up the Windows Forms designer for instance. Some
messages you may encounter may resemble this one:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;font size="3"&gt;Package Load Failure&lt;br&gt;
Package 'Visual Studio Common IDE Package' has failed to load or
properly ( GUID = {6E87CFAD-6C05-4ADF-9CD7-3B7943875B7C} ). Please
contact package vendor for assistance. Application restart is
recommended, due to possible environment corruption. Would you like to
disable loading this package in the future? You may use 'devenv.exe
/resetskippkgs' to re-enable package loading&lt;/font&gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;For this category of problems, there exists the &lt;b&gt;Visual Studio troubleshooting tool&lt;/b&gt; (gracefully provided by &lt;a href="http://blogs.msdn.com/astebner/"&gt;Aaron Stebner&lt;/a&gt;)
which can be used to clean all the old stuff that was left on your hard
drive by Beta1 release of Visual Studio and thus fully enables Visual
Studio .NET 2005.&lt;br&gt;
NB : this tool should also work if you encounter problems with an Express edition of Visual Studio&lt;br&gt;
The tool is available for download here: &lt;a href="http://astebner.sts.winisp.net/Tools/ttool.zip"&gt;http://astebner.sts.winisp.net/Tools/ttool.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the article accompanying it: &lt;a href="http://blogs.msdn.com/astebner/archive/2005/11/09/491118.aspx"&gt;http://blogs.msdn.com/astebner/archive/2005/11/09/491118.aspx&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx&amp;amp;;subject=Repairing+Visual+Studio+.NET+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx&amp;amp;;title=Repairing+Visual+Studio+.NET+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx&amp;amp;title=Repairing+Visual+Studio+.NET+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx&amp;amp;;title=Repairing+Visual+Studio+.NET+2005" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx&amp;amp;;title=Repairing+Visual+Studio+.NET+2005&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/oliviers_net_blog/archive/2006/06/07/Repairing-Visual-Studio-.NET-2005.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=18501" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/oliviers_net_blog/archive/tags/.net/default.aspx">.net</category></item></channel></rss>