<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/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>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Re: One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2710.aspx</link><pubDate>Mon, 13 Jun 2005 06:40:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2710</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2710.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2710</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Ναι, αυτό ετοιμαζόμουν να γράψω κι εγώ μόλις τώρα! Βιάστηκα λίγο προηγουμένως... &lt;img src="/forums//emoticons/emotion-1.gif" alt="Smile" /&gt; &lt;br /&gt;Τα mutexes είναι ωραίος τρόπος, χρησιμοποιούνται για interprocess synchronization και είναι και thread safe...&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2708.aspx</link><pubDate>Mon, 13 Jun 2005 06:32:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2708</guid><dc:creator>Aris</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2708.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2708</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Δεν νομίζω ότι η εφαρμογή του singleton pattern σε επίπεδο κύριας φόρμας θα λειτουργήσει. Το νέο instance της εφαρμογής είναι σε άλλο AppDomain.&lt;br /&gt;&lt;br /&gt;Μιά καλή λύση (συνίσταται και στο MSDN) είναι η χρήση Mutex. Δες τον παρακάτω κώδικα (C# Console Application, προσαρμογή του κώδικα των links παρακάτω):&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class="source"&gt;&lt;table border="0" cellspacing="0" width="100%"&gt;&lt;tr&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td bgcolor="lightgrey" width="15"&gt;&lt;/td&gt;&lt;td bgcolor="lightgrey"&gt;&lt;br&gt;&lt;font face="Lucida Console, Courier" size="2"&gt;&lt;br/&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;using&lt;/font&gt;&lt;font size="2"&gt; System.Threading;&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;p&gt;namespace&lt;/font&gt;&lt;font size="2"&gt; SingleInstance&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&lt;/font&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;summary&amp;gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&lt;/font&gt;&lt;font color="#008000" size="2"&gt; Summary description for Class1.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&lt;/font&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;/summary&amp;gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&lt;/font&gt;&lt;font size="2"&gt; Class1&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; Mutex mtx = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&lt;/font&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;summary&amp;gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&lt;/font&gt;&lt;font color="#008000" size="2"&gt; The main entry point for the application.&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&lt;/font&gt;&lt;font color="#008000" size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;&amp;lt;/summary&amp;gt;&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[STAThread]&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; Main(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt;[] args)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/font&gt;&lt;font size="2"&gt; (IsAnotherInstanceRuning()) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Rest of code&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.Write("First instance\nPress Enter to close");&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.ReadLine();&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#008000"&gt;// DO NOT FORGET TO RELEASE IT&lt;/font&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/font&gt;&lt;font size="2"&gt; (mtx != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;) mtx.ReleaseMutex();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;static&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; IsAnotherInstanceRuning() &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool&lt;/font&gt;&lt;font size="2"&gt; granted;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mtx = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; Mutex(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;, "MyNamespace.MyApplication", &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;out&lt;/font&gt;&lt;font size="2"&gt; granted); &lt;/font&gt;&lt;font color="#008000" size="2"&gt;// &amp;lt;-- Something unique for the App&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/font&gt;&lt;font size="2"&gt; !granted;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/pre&gt; &lt;p&gt;Εάν θες να περιορίσεις την εφαρμογή σε ένα instance ακόμα και σε αλλαγή χρηστών (fast user switch - στα XP), κάνεις το mutex global. Για να το κάνεις αυτό, αντικατέστησε το &lt;font size="2"&gt;&lt;font face="Courier New" color="#000080"&gt;"MyNamespace.MyApplication"&lt;/font&gt; με &lt;font face="Courier New" color="#000080"&gt;"GLOBAL\\MyNamespace.MyApplication"&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;&lt;br /&gt;&lt;br /&gt;Τα σχετικά links:&lt;br /&gt;&lt;a target="_blank" title="http://support.microsoft.com/default.aspx?scid=kb;en-us;243953" href="http://support.microsoft.com/default.aspx?scid=kb;en-us;243953"&gt;How to limit 32-bit applications to one instance in Visual C++&lt;/a&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;a target="_blank" title="http://support.microsoft.com/default.aspx?scid=kb;en-us;310153" href="http://support.microsoft.com/default.aspx?scid=kb;en-us;310153"&gt;How To Write an Application That Supports Fast User Switching in Windows XP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Άρης&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2705.aspx</link><pubDate>Mon, 13 Jun 2005 02:08:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2705</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2705.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2705</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Με πέτυχες την στιγμή που φεύγω για σινεμά... Θα απαντήσω μόλις γυρίσω...&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2704.aspx</link><pubDate>Mon, 13 Jun 2005 01:58:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2704</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2704.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2704</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Ενώ είχα γνώση του singleton pattern, και είχα βρεί και αντίστοιχα δείγματα κώδικα, αυτό που με προβλημάτιζε ήταν πως θα μπορούσα να πω σε μια &lt;strong&gt;εφαρμογή &lt;/strong&gt;(και όχι σε μια μεμονωμένη φόρμα) οτι πρέπει να είναι singleton.&lt;br /&gt;&lt;br /&gt;Φαίνεται οτι μου λύνεις εδώ την απορία, Μανο. Θα μπορούσες να το περιγράψεις με περισσότερη λεπτομέρεια, ωστε και οι υπόλοιποι συνάδελφοι που τυχόν έχουν τον ίδιο προβληματισμό να πάρουν ιδέες;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2699.aspx</link><pubDate>Mon, 13 Jun 2005 00:48:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2699</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2699.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2699</wfw:commentRss><description>&lt;font size="2"&gt;Mιας και είναι της μόδας &lt;img src="/forums//emoticons/emotion-4.gif" alt="Stick out tongue" /&gt; τα patterns,&amp;nbsp;και μιας ο Panagiotis μάλλον ετοιμάζει τις βαλίτσες του για το&amp;nbsp;TechEd και δεν πρόσεξε το post &lt;img src="/forums//emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;&lt;img src="/forums//emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;,&amp;nbsp;ορίστε πως λύνεται το πρόβλημα μέσω του singleton pattern... &lt;br /&gt;&lt;/font&gt;&lt;br /&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;Public&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt; SingletonForm&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Inherits&lt;/span&gt; Form&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Shared&lt;/span&gt; theInstance &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SingletonForm&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;span style="COLOR: blue"&gt;New&lt;/span&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Shared&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; GetInstance() &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SingletonForm&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; theInstance &lt;span style="COLOR: blue"&gt;Is&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Nothing&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;theInstance = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SingletonForm&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; theInstance&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Overrides&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; OnClosing(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; e &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; System.ComponentModel.CancelEventArgs)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;e.Cancel = &lt;span style="COLOR: blue"&gt;True&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Me&lt;/span&gt;.Hide()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;End&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Lucida Console'"&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: Verdana; mso-ansi-language: EL; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;To πλεονέκτημα αυτής της λύσης είναι ότι&lt;br /&gt;i) Όταν περιγράφετε την εφαρμογή που φτιάχνετε σε συνάδελφους developers θα αναφέρεστε στο pattern και έτσι θα είστε μέσα στο hype&lt;br /&gt;ii) Mπορεί να εφαρμοσθεί και για μεμονωμένες &lt;/span&gt;&lt;font size="2"&gt;φόρμες μέσα στην εφαρμογή που θέλουμε να ανοίγουν μόνο μια φορά. Αν θέλουμε να ισχύει για όλη την εφαρμογή, μέσα από ένα Main καλούμε το SingletonForm.GetInstance, παίρνουμε το reference και το περνάμε στο Application.Run. &lt;/font&gt;&lt;br /&gt;</description></item><item><title>Re: One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2694.aspx</link><pubDate>Sun, 12 Jun 2005 21:30:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2694</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2694.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2694</wfw:commentRss><description>Χρήσιμος κώδικας, αλλά είναι λίγο αργός, όταν έχεις πολλά processes. Δεν μας επηρεάζει βέβαια αυτό πάρα πολύ μια και δεν πρόκειται να τρέχει συνεχώς (μονο στην αρχή), αλλα απλά το επισημαίνω.&lt;br /&gt;&lt;br /&gt;Στο loop, καλό είναι να προσθέσεις τη γραμμή:&lt;br /&gt;&lt;br /&gt;&lt;pre class="source"&gt;&lt;table border="0" cellspacing="0" width="100%"&gt;&lt;tr&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td bgcolor="lightgrey" width="15"&gt;&lt;/td&gt;&lt;td bgcolor="lightgrey"&gt;&lt;br&gt;&lt;font face="Lucida Console, Courier" size="2"&gt;If count &amp;gt; 1 Then Exit For&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/pre&gt;για να αποφύγεις να συνεχίσεις τον έλεγχο αφότου βρείς και δεύτερο process με το ίδιο όνομα. Ουσιαστικά θέλεις να μην φορτώσεις το ίδιο πράγμα αν το βρεις ήδη δύο φορές. (Μια αυτό που έχει τρέξει και μια αυτό που τρέχει τώρα).&lt;br /&gt;&lt;br /&gt;Επίσης να συμπληρώσω οτι το process name το παίρνεις με τον εξης κώδικα:&lt;br /&gt;&lt;br /&gt;&lt;pre class="source"&gt;&lt;table border="0" cellspacing="0" width="100%"&gt;&lt;tr&gt;&lt;td width="15"&gt;&lt;/td&gt;&lt;td bgcolor="lightgrey" width="15"&gt;&lt;/td&gt;&lt;td bgcolor="lightgrey"&gt;&lt;br&gt;&lt;font face="Lucida Console, Courier" size="2"&gt;Dim strCurrentProcessName As String&lt;br/&gt;strCurrentProcessName = _&lt;br/&gt;System.Diagnostics.Process.GetCurrentProcess.ProcessName.ToString()&lt;br/&gt;&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/pre&gt;&lt;br /&gt;Τωρα βέβαια δεν ξέρω αν αυτός ο τρόπος είναι ασφαλής. Το process name εικάζω οτι πιθανόν να είναι κοινό και για εφαρμογές που μπορεί να μην είναι ίδιες. &lt;br /&gt;&lt;br /&gt;Κοιτώντας, βρήκα και ένα &lt;a target="_blank" title="http://www.codeproject.com/csharp/singleinstance.asp" href="http://www.codeproject.com/csharp/singleinstance.asp"&gt;αρθράκι στο code project&lt;/a&gt;, που μπορεί να είναι χρήσιμο. &lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description></item><item><title>One Instance of an Application</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/2681.aspx</link><pubDate>Sun, 12 Jun 2005 03:38:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:2681</guid><dc:creator>plavidas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/2681.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=2681</wfw:commentRss><description>&lt;p&gt;Χαιρετώ και πάλι το forum χωρίς αυτή τη φορά να κάνω κάποια ερώτηση αλλα για να μιλήσω... [&amp;lt;:o)]&lt;br /&gt;&lt;br /&gt;μπορούμε πολύ εύκολα να ελέγξουμε άν η εφαρμογή μας τρέχει ήδη και να μην αφήνουμε να φορτωθεί δεύτερη φορά...&lt;br /&gt;&lt;font color="#008000" size="2"&gt;&lt;/p&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;'Returns true if it finds more than 'one processName' running&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Private&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;/font&gt;&lt;font size="2"&gt; CheckForDuplicateProcess(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ByVal&lt;/font&gt;&lt;font size="2"&gt; processName &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;String&lt;/font&gt;&lt;font size="2"&gt;) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Βoolean&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;p&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;'function returns true if it finds more than one 'processName' running&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&lt;/font&gt;&lt;font size="2"&gt; Procs() &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Process&lt;br /&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;'get ALL processes running on this machine in all desktops&lt;br /&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;'this also finds all services running as well.&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Procs = Process.GetProcesses()&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&lt;/font&gt;&lt;font size="2"&gt; count &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Integer&lt;/font&gt;&lt;font size="2"&gt; = 0&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;For&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Each&lt;/font&gt;&lt;font size="2"&gt; proc &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; Process &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;In&lt;/font&gt;&lt;font size="2"&gt; Procs&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&lt;/font&gt;&lt;font size="2"&gt; proc.ProcessName.ToString.Equals(processName) &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count += 1&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next&lt;/font&gt;&lt;font size="2"&gt; proc&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;If&lt;/font&gt;&lt;font size="2"&gt; count &amp;gt; 1 &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;True&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Else&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;False&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;If&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;br /&gt;End&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Function&lt;br /&gt;&lt;br /&gt;&lt;font color="#000000"&gt;Μπορεί για κάποιους να είναι χρήσιμη αυτή η Function&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;font color="#000000"&gt;Παναγιώτης Λαβίδας&lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;Software Developer&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;</description></item></channel></rss>