<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET</title>
        <link>http://blogs.ugidotnet.org/dotNET4ever/category/.NET.aspx</link>
        <description>Che altro dire: .NET!</description>
        <language>it-IT</language>
        <copyright>Michele Bernardi</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Named Mutex: non mettete '\' nel nome!</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2011/06/12/named-mutex-non-mettete-nel-nome.aspx</link>
            <description>Non avevo mai usato un named Mutex, ma oggi ho bisogno di acquisire un Lock a livello di sistema e non solo interno al processo e ovviamente ci ho perso 1 ora per capirci qualcosa!
In poche ed imprecise parole: se nel nome di un Mutex anteponete la stringa "Global\" il Mutex avrà validità contemporanea su tutte le sessioni Terminal Services, se mettete "Local\" o non mettete niente avrà effetto solo sulla sessione corrente.
Dov'é il problema? Se voi mettete una stringa tipo "Global\MioPC\MiaRisorsa" o "Local\MioPC\MiaRisorsa" o "MioPC\MiaRisorsa" vi beccate una IOException non propriamente parlante ("La sintassi del nome del file, della directory o del volume non è corretta.").
Soluzione: non usate il carattere '\' nel nome del vostro Mutex (sembra invece non dare problemi il carattere '/')!&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/100126.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2011/06/12/named-mutex-non-mettete-nel-nome.aspx</guid>
            <pubDate>Sun, 12 Jun 2011 19:10:13 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2011/06/12/named-mutex-non-mettete-nel-nome.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/100126.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/100126.aspx</trackback:ping>
        </item>
        <item>
            <title>Power Tools: Backup TFS</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2010/08/19/power-tools-backup-tfs.aspx</link>
            <description>Per tutti quelli che non seguono il blog di Brian Harry: dalla prossima versione dei Power Tools sarà disponibile una procedura di backup VERAMENTE ALLA PORTATA DI TUTTI! Soprattutto per chi ha installato la versione Basic, i piccoli team che si aspettano una procedura di backup semplificata.
Maggiori informazioni (veramente dettagliate): alla fonte.&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/99085.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2010/08/19/power-tools-backup-tfs.aspx</guid>
            <pubDate>Thu, 19 Aug 2010 10:03:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2010/08/19/power-tools-backup-tfs.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/99085.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/99085.aspx</trackback:ping>
        </item>
        <item>
            <title>[TFS] TFSDeleteProject non (sempre) cancella tutto il progetto</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2009/01/21/tfs-tfsdeleteproject-non-sempre-cancella-tutto-il-progetto.aspx</link>
            <description>In TFS l'unico metodo per cancellare un progetto é tramite un tool a linea di comando: TFSDeleteProject. Alcune informazioni relative al progetto poterbbero però sopravvivere anche a questa operazione, in particolare:
- Il TFSWarehouse non subirà alcuna modifica, i dati relativi al progetto rimarranno caricati. Per eliminare questi dati é necessario fare il rebuild del TFSwarehouse (vedi Setupwarehouse)
- Le cartelle dove viene fatto il drop delle build non vengono toccate
- Metadati dei workitem condivisi tra più progetti
- Shelveset che contengono file provenienti da un altro progetto

Maggiori informazioni: qui
Fonte: neno's blog&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/95262.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2009/01/21/tfs-tfsdeleteproject-non-sempre-cancella-tutto-il-progetto.aspx</guid>
            <pubDate>Wed, 21 Jan 2009 10:33:54 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2009/01/21/tfs-tfsdeleteproject-non-sempre-cancella-tutto-il-progetto.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/95262.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/95262.aspx</trackback:ping>
        </item>
        <item>
            <title>Process.Start e limiti sulla quantità di argomenti</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2008/07/23/process.start-e-limiti-sulla-quantit%25c3%25a0-di-argomenti.aspx</link>
            <description>Lo so che é una cosa abbastanza inusuale avviare un processo con una stringa di comando (ampiamente) più lunga di 2000 caratteri, ma se dovesse servirvi sappiate un paio di cose:

    Su windows &amp;lt;= windows 2000 (ok, dovrebbero essere un ricordo) il limite é sempre e comunque 260 caratteri, su windows &amp;gt;= windows XP il limite teorico é di 32Kb
    Non usate Process.StartInfo.UseShellExecute = true (o gli overload Process.Start(string, string), ecc.)

Impostando UseShellExecute = true (valore di default) riceverete una bella: "System.ComponentModel.Win32Exception: Access Denied"&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/93512.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2008/07/23/process.start-e-limiti-sulla-quantit%25c3%25a0-di-argomenti.aspx</guid>
            <pubDate>Wed, 23 Jul 2008 17:19:55 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2008/07/23/process.start-e-limiti-sulla-quantit%25c3%25a0-di-argomenti.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/93512.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/93512.aspx</trackback:ping>
        </item>
        <item>
            <title>Graphics.DrawImageUnscaled</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2008/07/20/graphics.drawimageunscaled.aspx</link>
            <description>Se dovesse capitarvi, come al sottoscritto, di scervellarvi per capire perché il metodo DrawImageUnscaled della classe Graphics vi stampa un'immagine che é tutt'altro che UNscaled la spiegazione sta nel fatto che l'immagine di origine e di destinazione hanno impostato dei differenti DPI... Al di là del fatto che mi sembrava molto più logico che usasse i pixel come unità di riferimento, la soluzione é usare il metodo DrawImage. Se anche voi come il sottoscritto temete un degrado di prestazioni vi rassicuro che potete dormire sonni tranquilli: DrawImageUnscaled internamente usa DrawImage (No Comment!).&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/93473.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2008/07/20/graphics.drawimageunscaled.aspx</guid>
            <pubDate>Sun, 20 Jul 2008 17:31:20 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2008/07/20/graphics.drawimageunscaled.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/93473.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/93473.aspx</trackback:ping>
        </item>
        <item>
            <title>Team System: data dei file</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/07/30/86989.aspx</link>
            <description>Estraendo files da un server Team Foundation la data dei files presenti sul disco viene impostata alla data in cui questi sono stati estratti. Non che ci veda niente di strano, anzi... Purtroppo per&amp;#242; numerose persone che erano abiuate ad usare Visual Source Safe sentono questo come un problema (non chiedetemi perch&amp;#233;, ma vi garantisco che almeno una decina di persone me l'ha segnalato). 
Soluzione? Creare un programmino (console) che imposti la data dei file NON ESTRATTI in base alla data dell'ultimo checkin (scusate la lunghezza): 
public static void ChangeDate(string ServerName, string workspaceName, string workspaceOwner, string pattern, bool subDirectories){    TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(ServerName);    VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));    Workspace ws;    if (string.IsNullOrEmpty(workspaceOwner))        ws = WorkspaceSettings.GetWorkspace(vcs, workspaceName);    else        ws = WorkspaceSettings.GetWorkspace(vcs, workspaceName, workspaceOwner);    if (ws == null)        Console.WriteLine("Workspace specified doesn't exists.");    else    {        //Cerco la lista dei files specificati        ItemSet items;        if (subDirectories)            items = vcs.GetItems(pattern, RecursionType.Full);        else            items = vcs.GetItems(pattern, RecursionType.None);        //Controllo ogni singolo Item        foreach (Item item in items.Items)        {            if (ws.IsServerPathMapped(item.ServerItem))            {                //Trovo il file locale                string file = ws.GetLocalItemForServerItem(item.ServerItem);                System.IO.FileAttributes fileAttributes = System.IO.File.GetAttributes(file);                //Se il file &amp;#233; readonly ri-applico la data altrimenti lo considero estratto e non gli cambio data                if ((fileAttributes &amp; System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly)                {                    //Per cambiare la data devo prima rimuovere l'attributo di readonly                    System.IO.File.SetAttributes(file, fileAttributes &amp; ~System.IO.FileAttributes.ReadOnly);                    System.IO.File.SetLastWriteTime(file, item.CheckinDate);                    System.IO.File.SetAttributes(file, fileAttributes);                    Console.WriteLine(item.CheckinDate.ToString() + file);                }                else                    Console.WriteLine("checkedout " + file);                //Console.WriteLine(item.ServerItem + " is mapped as " + file.FullName);            }            else                Console.WriteLine(item.ServerItem + " is not mapped");        }        Console.WriteLine("Workspace's name is: " + ws.DisplayName);    }}&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/86989.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/07/30/86989.aspx</guid>
            <pubDate>Mon, 30 Jul 2007 15:36:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/07/30/86989.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/86989.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/86989.aspx</trackback:ping>
        </item>
        <item>
            <title>Team System: TeamFoundationServerFactory.GetServer accede al registry - LA SOLUZIONE</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/06/20/82877.aspx</link>
            <description>Se cercate di creare un oggetto TeamFoundationServer da un thread che gira con un account utente che non ha le credenziali di scrittura sul registry incapperete nell'eccezione [SecurityException: Requested registry access is not allowed.] (come gi&amp;#224; descritto qui).Grazie all'inossidabile Lorenzo ed ai suoi preziosi contatti ho trovato la soluzione.
Sostanzialmente (se ho ben capito) se specifico un server nei metodi (ed i loro rispettivi overloads):TeamFoundationServerFactory.GetServer(serverName)new TeamFoundationServer(serverName)passando come parametro il SOLO NOME del server viene effettuato dapprima un accesso in lettura alla chiave:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\TeamFoundation\Serversper verificare se esiste un server memorizzato con il nome passato, dappoi tenta l'accesso al server specificato sulla porta standard (8080). Verificata l'esistenza del server cerca di scrivere nella sopracitata chiave un valore. E qui casca TS: se il mio utente non ha il permesso di scrittura nella chiave tutto crasha (no, non ditemi "&amp;#233; giusto cos&amp;#236;": la verit&amp;#224; &amp;#233; che manca un bel try catch!).
Workaround? Banalmente basta specificare l'URL completo del server: http://severName:8080Se poi avete esigenza di fare funzionare il tutto con ASP.NET ringraziando l'amico Luis di Lorenzo guardaveti questa pagina.
Incrociare le dita... e che Dio ce la mandi buona!&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/82877.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/06/20/82877.aspx</guid>
            <pubDate>Wed, 20 Jun 2007 18:48:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/06/20/82877.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/82877.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/82877.aspx</trackback:ping>
        </item>
        <item>
            <title>Team System: TeamFoundationServerFactory.GetServer accede al registry</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/06/19/82761.aspx</link>
            <description>E se il mio utente non ha permesso di scrivere nel registry?!Risposta:
System.ThrowHelper.ThrowSecurityException(ExceptionResource resource) +48Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) +2780921 Microsoft.TeamFoundation.Client.RegisteredServers.OpenCurrentUser(Boolean writable, Boolean shouldCreate) +50 Microsoft.TeamFoundation.Client.RegisteredServers.GetUriForServer(String serverName) +43 Microsoft.TeamFoundation.Client.TeamFoundationServer.GetUriForName(String name) +93 Microsoft.TeamFoundation.Client.TeamFoundationServer.get_Uri() +25 Microsoft.TeamFoundation.Client.CheckAuthenticationProxy..ctor(TeamFoundationServer server) +22 Microsoft.TeamFoundation.Client.TeamFoundationServer.Authenticate(Boolean useProvider, ICredentialsProvider provider) +58 Microsoft.TeamFoundation.Client.TeamFoundationServer.Authenticate() +17
E tutto questo per memorizzare l'elenco dei server conosciuti per l'utente... Direi che sono DISCRETAMENTE senza parole... alla faccia di sviluppare con zero privilegi!!! Francamente per quanto mi sforzi non riesco a trovare nessuna soluzione SPECIALMENTE perch&amp;#233; la mia &amp;#233; un'applicazione ASP.NET che dovrebbe girare con impersonation!!! :-S 
&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/82761.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/06/19/82761.aspx</guid>
            <pubDate>Tue, 19 Jun 2007 19:29:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2007/06/19/82761.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/82761.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/82761.aspx</trackback:ping>
        </item>
        <item>
            <title>Aruba Free Hosting!</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2006/05/25/41597.aspx</link>
            <description>Faccio un po' di publicit&amp;#224; ad una contestatissima (anche se secondo me nemmeno troppo giustamente) societ&amp;#224; di hosting italiano: su aruba &amp;#233; possibile registrarsi per una "demo" di ASP.NET 2.0 con SQL Server 2005 (express). 100 Mb di spazio + 50 di DB + dominio di quarto livello...Provare per credere!!! 
Fonte: http://testdotnet.aruba.it/&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/41597.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2006/05/25/41597.aspx</guid>
            <pubDate>Thu, 25 May 2006 18:45:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2006/05/25/41597.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/41597.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/41597.aspx</trackback:ping>
        </item>
        <item>
            <title>Minimo comune multiplo in Visual Basic</title>
            <link>http://blogs.ugidotnet.org/dotNET4ever/archive/2006/03/06/36227.aspx</link>
            <description>
Dovesse servirvi...Eccolo:
&amp;nbsp;'''&amp;nbsp;-----------------------------------------------------------------------------&amp;nbsp;'''&amp;nbsp;&amp;lt;summary&amp;gt;&amp;nbsp;'''&amp;nbsp;Calcola&amp;nbsp;il&amp;nbsp;minimo&amp;nbsp;comune&amp;nbsp;multiplo&amp;nbsp;'''&amp;nbsp;&amp;lt;/summary&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;param&amp;nbsp;name="num"&amp;gt;Interi&amp;nbsp;tra&amp;nbsp;cui&amp;nbsp;calcolare&amp;nbsp;il&amp;nbsp;mcm&amp;lt;/param&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;remarks&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;/remarks&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;history&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;nbsp;&amp;nbsp;[michele]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;08/02/2006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Created&amp;nbsp;'''&amp;nbsp;&amp;lt;/history&amp;gt;&amp;nbsp;'''&amp;nbsp;-----------------------------------------------------------------------------&amp;nbsp;Public&amp;nbsp;Overloads&amp;nbsp;Shared&amp;nbsp;Function&amp;nbsp;mcm(ByVal&amp;nbsp;ParamArray&amp;nbsp;num()&amp;nbsp;As&amp;nbsp;Int32)&amp;nbsp;As&amp;nbsp;Int32&amp;nbsp;&amp;nbsp;&amp;nbsp;If&amp;nbsp;num.Length&amp;nbsp;=&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;ElseIf&amp;nbsp;num.Length&amp;nbsp;=&amp;nbsp;1&amp;nbsp;Then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&amp;nbsp;num(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;End&amp;nbsp;If&amp;nbsp;&amp;nbsp;&amp;nbsp;mcm&amp;nbsp;=&amp;nbsp;num(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;For&amp;nbsp;N&amp;nbsp;As&amp;nbsp;Int32&amp;nbsp;=&amp;nbsp;1&amp;nbsp;To&amp;nbsp;num.GetUpperBound(0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mcm&amp;nbsp;=&amp;nbsp;mcm(mcm,&amp;nbsp;num(N))&amp;nbsp;&amp;nbsp;&amp;nbsp;Next&amp;nbsp;N&amp;nbsp;End&amp;nbsp;Function&amp;nbsp;'''&amp;nbsp;-----------------------------------------------------------------------------&amp;nbsp;'''&amp;nbsp;&amp;lt;summary&amp;gt;&amp;nbsp;'''&amp;nbsp;Calcola&amp;nbsp;il&amp;nbsp;minimo&amp;nbsp;comune&amp;nbsp;multiplo&amp;nbsp;'''&amp;nbsp;&amp;lt;/summary&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;param&amp;nbsp;name="a"&amp;gt;Primo&amp;nbsp;intero&amp;lt;/param&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;param&amp;nbsp;name="b"&amp;gt;Secondo&amp;nbsp;intero&amp;lt;/param&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;remarks&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;/remarks&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;lt;history&amp;gt;&amp;nbsp;'''&amp;nbsp;&amp;nbsp;&amp;nbsp;[michele]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;08/02/2006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Created&amp;nbsp;'''&amp;nbsp;&amp;lt;/history&amp;gt;&amp;nbsp;'''&amp;nbsp;-----------------------------------------------------------------------------&amp;nbsp;Public&amp;nbsp;Overloads&amp;nbsp;Shared&amp;nbsp;Function&amp;nbsp;mcm(ByVal&amp;nbsp;a&amp;nbsp;As&amp;nbsp;Int32,&amp;nbsp;ByVal&amp;nbsp;b&amp;nbsp;As&amp;nbsp;Int32)&amp;nbsp;As&amp;nbsp;Int32&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim&amp;nbsp;c&amp;nbsp;As&amp;nbsp;Long&amp;nbsp;=&amp;nbsp;a&amp;nbsp;*&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;'Dim&amp;nbsp;r&amp;nbsp;As&amp;nbsp;Long&amp;nbsp;&amp;nbsp;&amp;nbsp;Do&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mcm&amp;nbsp;=&amp;nbsp;a&amp;nbsp;Mod&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;=&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b&amp;nbsp;=&amp;nbsp;mcm&amp;nbsp;&amp;nbsp;&amp;nbsp;Loop&amp;nbsp;While&amp;nbsp;mcm&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&amp;nbsp;Convert.ToInt32(c&amp;nbsp;\ 
a)&amp;nbsp;End&amp;nbsp;Function


powered by IMHO 1.3&lt;img src="http://blogs.ugidotnet.org/dotNET4ever/aggbug/36227.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michele Bernardi</dc:creator>
            <guid>http://blogs.ugidotnet.org/dotNET4ever/archive/2006/03/06/36227.aspx</guid>
            <pubDate>Mon, 06 Mar 2006 19:27:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dotNET4ever/archive/2006/03/06/36227.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dotNET4ever/comments/commentRss/36227.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dotNET4ever/services/trackbacks/36227.aspx</trackback:ping>
        </item>
    </channel>
</rss>