<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>CCTING</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/default.aspx" /><tagline type="text/html" /><id>http://thespoke.net/blogs/ccting/default.aspx</id><author><url>http://thespoke.net/blogs/ccting/default.aspx</url></author><generator url="http://communityserver.org" version="1.1.0.50602">Community Server</generator><modified>2005-06-06T06:03:00Z</modified><entry><title>Optimize your System Memory using C#</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2006/12/01/974238.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:974238</id><created>2006-12-01T01:23:00Z</created><content type="text/html" mode="escaped">&lt;SPAN&gt;&amp;nbsp; 
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I try to use TuneUp2006 to optimize my memory, but it takes too long and my hard disk keep making sounds. I hate waiting for optimization because it keep me out of my work as i am using my old Celeron 2.2GHz notebook. Hence i wrote a simple program to optimize my notebook memory. You don't have to think of complex algorithm to free memory, and what you need to do is JUST TO FORCE WINDOWS to FREE UP more memory for your system. Therefore, what you need to do is to consume more physical memory :D. Write a program like below. Run it, and terminate it by force after a few seconds, and your system memory will be recovered to 30-80%. It is much faster compared to TuneUp memory Optimization. Have Fun&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Author: Ting Choo Chiaw&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;email: &lt;A title=mailto:choochiaw.ting@gmail.com href="mailto:choochiaw.ting@gmail.com"&gt;choochiaw.ting@gmail.com&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;[StructLayout(LayoutKind.Sequential)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal class MEMORYSTATUS&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal int length;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal int memoryLoad;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal uint totalPhys;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal uint availPhys;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal uint totalPageFile;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal uint availPageFile;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal uint totalVirtual;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal uint availVirtual;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DllImport("kernel32.dll", SetLastError = true)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static extern bool GlobalMemoryStatus( MEMORYSTATUS buffer);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void FreeMem()&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MEMORYSTATUS status = new MEMORYSTATUS();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GlobalMemoryStatus(status);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool bContinue = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int memory = (int)status.totalPhys;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int iCount = 0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR&gt;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] hhh = new byte[memory];&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&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; using (System.IO.MemoryStream ms = new MemoryStream(memory))&lt;BR&gt;&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;&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; ms.Write(hhh, 0, memory);&lt;BR&gt;&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; ms.Close();&lt;BR&gt;&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; iCount++;&lt;BR&gt;&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; memory = (int)(memory * 1.1);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&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; if(iCount &amp;gt;10) //you can increase / decrease. smaller value = faster.&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bContinue = false;&lt;BR&gt;&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;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (System.OutOfMemoryException)&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memory = (int)(memory * 0.99);&lt;BR&gt;&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; bContinue = true;&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.GC.AddMemoryPressure((int)status.totalPhys);&lt;BR&gt;&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; System.GC.GetGeneration(System.GC.MaxGeneration);&lt;BR&gt;&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; System.GC.Collect();&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while (bContinue);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void btnFreeMem_Click(object sender, EventArgs e)&lt;BR&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Threading.Thread a =&amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Threading.Thread(new System.Threading.ThreadStart(FreeMem));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.IsBackground = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.Start();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.Join(1000); // the more u put, the better result it is&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.Abort();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.Exit();&lt;BR&gt;&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&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=974238" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=974238</wfw:commentRss></entry><entry><title>External IP + C# + Router IP</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2006/12/01/973843.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:973843</id><created>2006-12-01T01:16:00Z</created><content type="text/html" mode="escaped">&lt;SPAN&gt;&lt;PRE&gt;There are many ways of detecting external IP of router. One of the easiest if using "web services".&lt;/PRE&gt;&lt;PRE&gt;However, this method has risk of using because the web service may change anytime and therefore this method will no more applicable.&lt;/PRE&gt;&lt;PRE&gt;I will talk about how to request external IP from "external DNS" in other time. Today i talk about the easiest way first.&lt;/PRE&gt;&lt;PRE&gt;System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("&lt;A href="http://www.what/"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;&lt;A href="http://www.whatismyip.org/%22);request.UserAgent"&gt;http://www.what&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;
ismyip.org/");

request.UserAgent&lt;/A&gt; = "User-Agent: Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
&lt;/PRE&gt;&lt;PRE&gt;System.Net.HttpWebResponse response =
	(System.Net.HttpWebResponse)request.GetResponse();

string myExternalIP = string.Empty;

using (System.IO.StreamReader reader = new
	StreamReader(response.GetResponseStream()))
{

	myExternalIP = reader.ReadToEnd();
	reader.Close();
}

response.Close();
&lt;/PRE&gt;&lt;PRE&gt;MessageBox.Show(myExternalIP);&lt;/PRE&gt;&lt;/SPAN&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=973843" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=973843</wfw:commentRss></entry><entry><title>Cheapest MSDN subscription for Developers in Malaysia</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/11/13/916934.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:916934</id><created>2005-11-13T03:22:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;May i know how can a company gets a Cheapest MSDN subscription for Developers in Malaysia?&lt;/P&gt;
&lt;P&gt;I remember a company can subscribe to MSDN around RM1k after discount. But i am not sure which package is that.. anyone?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=916934" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=916934</wfw:commentRss></entry><entry><title>Haze.NET</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/08/12/105194.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:105194</id><created>2005-08-12T19:07:00Z</created><content type="text/html" mode="escaped">West Malaysia suffer from haze...http://www.jas.sains.my/jas/API.htm&lt;BR&gt;&lt;BR&gt;Haze.NET is nothing to do with Microsoft .NET, pls dun misunderstand... it is the network of Malaysia Haze Monitor.....&lt;img src="http://thespoke.net/aggbug.aspx?PostID=105194" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=105194</wfw:commentRss></entry><entry><title>PROBLEMATIC SPLIT - WHIDBEY </title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/08/09/104887.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:104887</id><created>2005-08-09T16:22:00Z</created><content type="text/html" mode="escaped">&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;string AString = "Ting, Choo";&lt;BR&gt;string&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;[] tokens = AString&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;.Split(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;char&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt;[] { &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;','&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; });&lt;BR&gt;MessegeBox.Show(takens[0]);&amp;nbsp; //==&amp;gt;NO PROBLEM&lt;BR&gt;MessegeBox.Show(takens[1]); // ==&amp;gt;ERROR : out of index.. &lt;BR&gt;&lt;BR&gt;This is very ignoring, to overcome this error for Whidbey Beta 2,&lt;BR&gt;instead of using tokens[1], i did this &lt;BR&gt;&amp;nbsp;&amp;nbsp; string token2 = AString.Replace(tokens[0]);&lt;BR&gt;&lt;BR&gt;As i explore more in Whidbey 2, i have found countless of errors / mistakes which draw me to "uneffective" solutions..&lt;BR&gt;What say u?&lt;BR&gt;&lt;BR&gt;:(( bad bad bad.. writing a article for conference paper not an easy task for me, how about u.. give me many hands??? or even laser printers :D hahahaha..&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=104887" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=104887</wfw:commentRss></entry><entry><title>OGSI  on .NET!!!</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/07/31/104176.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:104176</id><created>2005-07-31T11:08:00Z</created><content type="text/html" mode="escaped">&lt;A target="_blank" href="http://www.nesc.ac.uk/technical_papers/NeSC-2003-01.pdf"&gt;http://www.nesc.ac.uk/technical_papers/NeSC-2003-01.pdf&lt;/A&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=104176" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=104176</wfw:commentRss></entry><entry><title>Can't login to thespoke.net</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/20/99964.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:99964</id><created>2005-06-20T09:30:00Z</created><content type="text/html" mode="escaped">Steps:&lt;BR&gt;1) IE-&amp;gt;Tools-&amp;gt;Internet Options-&amp;gt;Privacy-&amp;gt;Remove all&lt;BR&gt;2) Disable Google toolbar-&amp;gt;autofil option.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;:D.. finally can login to thespoke.net again..&lt;img src="http://thespoke.net/aggbug.aspx?PostID=99964" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=99964</wfw:commentRss></entry><entry><title>Microsoft Virtual Lab for .net learning</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/10/97999.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97999</id><created>2005-06-10T09:55:00Z</created><content type="text/html" mode="escaped">&lt;A target="_blank" href="http://g.msn.com/0AD0001K/723807.1??PID=2584906&amp;amp;UIT=G&amp;amp;TargetID=1063753&amp;amp;AN=16271&amp;amp;PG=CMSHP2" target=_blank&gt;http://g.msn.com/0AD0001K/723807.1??PID=2584906&amp;amp;UIT=G&amp;amp;TargetID=1063753&amp;amp;AN=16271&amp;amp;PG=CMSHP2&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;Seems like it does not support Microsoft password single-login compatibility..&lt;BR&gt;&lt;BR&gt;:((&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97999" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97999</wfw:commentRss></entry><entry><title>WSRF for .NET</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/09/97864.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97864</id><created>2005-06-09T16:06:00Z</created><content type="text/html" mode="escaped">Wow... WSRF for .NET.. excellent..!&lt;BR&gt;&lt;A target="_blank" href="http://www.cs.virginia.edu/~humphrey/papers/WSRFComparison2005.pdf" target=_blank&gt;http://www.cs.virginia.edu/~humphrey/papers/WSRFComparison2005.pdf&lt;/A&gt;&lt;BR&gt;This research is supported by MICROSOFT&amp;gt;... i am so outofdated!!!!&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97864" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97864</wfw:commentRss></entry><entry><title>The Open Source Development Environment for .NET</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/08/97639.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97639</id><created>2005-06-08T12:18:00Z</created><content type="text/html" mode="escaped">&lt;A target="_blank" href="http://www.icsharpcode.net/OpenSource/SD/"&gt;http://www.icsharpcode.net/OpenSource/SD/&lt;/A&gt;&lt;BR&gt;hahaha now i will never make use of VS2005 liao.. this ide only 7MB...&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97639" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97639</wfw:commentRss></entry><entry><title>VS 2005 out this november?</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/08/97610.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97610</id><created>2005-06-08T08:54:00Z</created><content type="text/html" mode="escaped">is that true?&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97610" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97610</wfw:commentRss></entry><entry><title>split and join Files</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/07/97370.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97370</id><created>2005-06-07T09:59:00Z</created><content type="text/html" mode="escaped">&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;public&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FilePartitionManager&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;private&lt;/FONT&gt;&lt;FONT size=2&gt; FilePartitionManager()&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&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;static&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; GetFolder(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; FileName)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;System.IO.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileInfo&lt;/FONT&gt;&lt;FONT size=2&gt; info = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileInfo&lt;/FONT&gt;&lt;FONT size=2&gt;(FileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; info.DirectoryName;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&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;void&lt;/FONT&gt;&lt;FONT size=2&gt; WritePartition(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; PartitionLength, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; ReadFileName, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; WriteFileName)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; reader = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(ReadFileName, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;FONT size=2&gt;.Open, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileAccess&lt;/FONT&gt;&lt;FONT size=2&gt;.Read);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] readBytes = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[PartitionLength];&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; directory = GetFolder(WriteFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iTotalPartition = CountPartition(reader.Length, PartitionLength);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (!System.IO.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Directory&lt;/FONT&gt;&lt;FONT size=2&gt;.Exists(directory))&lt;/P&gt;
&lt;P&gt;System.IO.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Directory&lt;/FONT&gt;&lt;FONT size=2&gt;.CreateDirectory(directory);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i = 0; i &amp;lt; iTotalPartition; i++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; FileName = WriteFileName + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"."&lt;/FONT&gt;&lt;FONT size=2&gt; + i.ToString() + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"."&lt;/FONT&gt;&lt;FONT size=2&gt; + iTotalPartition.ToString();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; writer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(FileName, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;FONT size=2&gt;.Create, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileAccess&lt;/FONT&gt;&lt;FONT size=2&gt;.Write);&lt;/P&gt;
&lt;P&gt;readBytes.Initialize();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iRead = reader.Read(readBytes, 0, PartitionLength);&lt;/P&gt;
&lt;P&gt;writer.Write(readBytes, 0, iRead);&lt;/P&gt;
&lt;P&gt;writer.Close();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;reader.Close();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;GC&lt;/FONT&gt;&lt;FONT size=2&gt;.Collect();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&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;void&lt;/FONT&gt;&lt;FONT size=2&gt; JoinPartition(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; OneOfPartitionFileName)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; WriteFileName = GetOrginalFileName(OneOfPartitionFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iTotalPartition = CountPartition(OneOfPartitionFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; writer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(WriteFileName, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;FONT size=2&gt;.Create, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileAccess&lt;/FONT&gt;&lt;FONT size=2&gt;.Write);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i = 0; i &amp;lt; iTotalPartition; i++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; PartitionFileName = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;.Format(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"{0}.{1}.{2}"&lt;/FONT&gt;&lt;FONT size=2&gt;, WriteFileName, i, iTotalPartition);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; reader = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(PartitionFileName, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;FONT size=2&gt;.Open, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileAccess&lt;/FONT&gt;&lt;FONT size=2&gt;.Read);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] readBytes = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[reader.Length];&lt;/P&gt;
&lt;P&gt;readBytes.Initialize();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iRead = reader.Read(readBytes, 0, readBytes.Length);&lt;/P&gt;
&lt;P&gt;writer.Write(readBytes, 0, iRead);&lt;/P&gt;
&lt;P&gt;reader.Close();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;writer.Close();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;GC&lt;/FONT&gt;&lt;FONT size=2&gt;.Collect();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&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;void&lt;/FONT&gt;&lt;FONT size=2&gt; JoinDeletePartition(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; OneOfPartitionFileName)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; WriteFileName = GetOrginalFileName(OneOfPartitionFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iTotalPartition = CountPartition(OneOfPartitionFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; writer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(WriteFileName, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;FONT size=2&gt;.Create, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileAccess&lt;/FONT&gt;&lt;FONT size=2&gt;.Write);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i = 0; i &amp;lt; iTotalPartition; i++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; PartitionFileName = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;.Format(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"{0}.{1}.{2}"&lt;/FONT&gt;&lt;FONT size=2&gt;, WriteFileName, i, iTotalPartition);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt; reader = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileStream&lt;/FONT&gt;&lt;FONT size=2&gt;(PartitionFileName, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileMode&lt;/FONT&gt;&lt;FONT size=2&gt;.Open, &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;FileAccess&lt;/FONT&gt;&lt;FONT size=2&gt;.Read);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] readBytes = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[reader.Length];&lt;/P&gt;
&lt;P&gt;readBytes.Initialize();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iRead = reader.Read(readBytes, 0, readBytes.Length);&lt;/P&gt;
&lt;P&gt;writer.Write(readBytes, 0, iRead);&lt;/P&gt;
&lt;P&gt;reader.Close();&lt;/P&gt;
&lt;P&gt;System.IO.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;File&lt;/FONT&gt;&lt;FONT size=2&gt;.Delete(PartitionFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;GC&lt;/FONT&gt;&lt;FONT size=2&gt;.Collect();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;writer.Close();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;GC&lt;/FONT&gt;&lt;FONT size=2&gt;.Collect();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&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;static&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; GetOrginalFileName(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; OneOfPartitionFileName)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iPartition = CountPartition(OneOfPartitionFileName);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; []names = OneOfPartitionFileName.Split(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;'.'&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; namesLength = names.Length;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; originalName = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;""&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i = 0; i &amp;lt; namesLength - 2; i++)&lt;/P&gt;
&lt;P&gt;originalName += names[i]+&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"."&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;originalName = originalName.Substring(0, originalName.Length - 1);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; originalName;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&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;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; CountPartition(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;long&lt;/FONT&gt;&lt;FONT size=2&gt; iTotalLength, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; PartitionLength)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt; aa = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt;)iTotalLength;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt; bb = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt;)PartitionLength;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt; cc = aa / bb;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; c = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt;)cc;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt; result = cc - c;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (result &amp;gt; 0)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; (c + 1);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; c;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&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;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; CountPartition(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; PartitionFileName)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;[] names = PartitionFileName.Split(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;'.'&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;bool&lt;/FONT&gt;&lt;FONT size=2&gt; bValid = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;true&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;char&lt;/FONT&gt;&lt;FONT size=2&gt; c &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; names[names.Length - 1])&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (!&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;char&lt;/FONT&gt;&lt;FONT size=2&gt;.IsDigit(c))&lt;/P&gt;
&lt;P&gt;bValid = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;false&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (!bValid)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;System.Windows.Forms.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;MessageBox&lt;/FONT&gt;&lt;FONT size=2&gt;.Show(PartitionFileName + &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;" is not a valid partition file"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; 0;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&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=#008080 size=2&gt;Convert&lt;/FONT&gt;&lt;FONT size=2&gt;.ToInt32( names[names.Length - 1]);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97370" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97370</wfw:commentRss></entry><entry><title>Unbelievable Performance - Unsafe Image Comparing</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/06/97037.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97037</id><created>2005-06-06T16:06:00Z</created><content type="text/html" mode="escaped">Approach one: Safe approach to compare two images&lt;BR&gt;&lt;BR&gt;Two approaches of comparing two same size bitmap (Assume all pixel size as 4 = PNG (RGBA). &lt;BR&gt;R=REd&lt;BR&gt;G= GREEN&lt;BR&gt;B=BLUE&lt;BR&gt;A=Alpha (Transparency)&lt;BR&gt;so the pixel size = 4..&lt;BR&gt;(i not sure whether this is true, but it does work !!, i hope those who knows give some comment)&lt;BR&gt;The result:&lt;BR&gt;Safe approach very slow,, 1 comparison / 1000 ms almost take my CPU utilizatin 100%&lt;BR&gt;Unsafe approach very fast, 1 comparison / 1000 ms almost take my CPU utilization less than 1%&lt;BR&gt;&lt;BR&gt;10 comparison / 1000ms with unsafe ==&amp;gt; 20% CPU utilization.&lt;BR&gt;&lt;BR&gt;So.. hahahaha nice right unsafe thing.&lt;BR&gt;&lt;BR&gt;Here my source code.. have fun&lt;BR&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;Approach ONE: Safe approach&lt;BR&gt;public&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; SafeCompare(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ref&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Bitmap&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; bmp1,&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ref&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Bitmap&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; bmp2)&lt;BR&gt;&lt;/FONT&gt;{&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; int&lt;/FONT&gt;&lt;FONT size=2&gt; iMismatch = 0;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; x = 0; x &amp;lt; bmp1.Width; x++)&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;&amp;nbsp; for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; y = 0; y &amp;lt; bmp1.Height; y++)&lt;BR&gt;&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;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (bmp1.GetPixel(x, y) != bmp2.GetPixel(x, y))&amp;nbsp;&amp;nbsp; &lt;BR&gt;&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; iMismatch++;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;double&lt;/FONT&gt;&lt;FONT size=2&gt; percent = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt;)iMismatch / (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;double&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (bmp1.Height*bmp1.Width);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/FONT&gt;&lt;FONT size=2&gt; percent * 100.0;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Approach TWO: UnSafe approach&lt;BR&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&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;double&lt;/FONT&gt;&lt;FONT size=2&gt; UnsafeCompare(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ref&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Bitmap&lt;/FONT&gt;&lt;FONT size=2&gt; myBit, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ref&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Bitmap&lt;/FONT&gt;&lt;FONT size=2&gt; myBit2)&lt;BR&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;System.Drawing.Imaging.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;BitmapData&lt;/FONT&gt;&lt;FONT size=2&gt; data = myBit.LockBits(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Rectangle&lt;/FONT&gt;&lt;FONT size=2&gt;(0, 0, myBit.Width, myBit.Height), System.Drawing.Imaging.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;ImageLockMode&lt;/FONT&gt;&lt;FONT size=2&gt;.ReadWrite, myBit.PixelFormat);&lt;/P&gt;
&lt;P&gt;System.Drawing.Imaging.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;BitmapData&lt;/FONT&gt;&lt;FONT size=2&gt; data2 = myBit2.LockBits(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Rectangle&lt;/FONT&gt;&lt;FONT size=2&gt;(0, 0, myBit.Width, myBit.Height), System.Drawing.Imaging.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;ImageLockMode&lt;/FONT&gt;&lt;FONT size=2&gt;.ReadWrite, myBit.PixelFormat);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; iDifferent = 0;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; PixelSize = 4;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;unsafe&lt;/FONT&gt;&lt;FONT size=2&gt;{&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;//REDUNDANT has happened later i correct :)&lt;BR&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;* imgPtr = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;*)data.Scan0;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;* imgPtr2 = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;*)data2.Scan0;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; y = 0; y &amp;lt; data.Height; y++){&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; int&lt;/FONT&gt;&lt;FONT size=2&gt; Y = y * data.Stride;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; byte&lt;/FONT&gt;&lt;FONT size=2&gt;* row = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;*)data.Scan0 + Y;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; byte&lt;/FONT&gt;&lt;FONT size=2&gt;* row2 = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;*)data2.Scan0 + Y;&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; for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; x = 0; x &amp;lt; data.Width; x++){&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;Blue&lt;/FONT&gt;&lt;FONT size=2&gt;= x * PixelSize;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;Green&lt;FONT size=2&gt; = Blue+1;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;Red&lt;FONT size=2&gt; = Green+1;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; (row[Red] != row2[Red] ||row[Green]!=row2[Green] ||row[Blue]!=row2[Blue])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iDifferent++;&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;myBit.UnlockBits(data);&lt;BR&gt;&amp;nbsp;myBit2.UnlockBits(data2);&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;return&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Convert&lt;/FONT&gt;&lt;FONT size=2&gt;.ToDouble(iDifferent) /&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;Convert&lt;/FONT&gt;&lt;FONT size=2&gt;.ToDouble(myBit.Width*myBit.Height)*100.0;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97037" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97037</wfw:commentRss></entry><entry><title>WebBroswer.Url in Whidbey Beta 1 vs Beta 2</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/06/97199.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97199</id><created>2005-06-06T12:11:00Z</created><content type="text/html" mode="escaped">Frankly speaking, i prefer beta 1 Webbrowser.Url because i can assign the url directly to the Url attributed without creating any instance of System.Uri.&lt;BR&gt;&lt;BR&gt;In Beta 1(Whidbey)&lt;BR&gt;WebBrowser.Url = &lt;A target="_blank" href=""&gt;http://www.thespoke.net&lt;/A&gt;;&lt;BR&gt;&lt;BR&gt;However, in Beta 2, i need to create an instance of System.URI..&lt;BR&gt;WebBrowser.Url = new System.Uri(&lt;A target="_blank" href="http://www.thepoke.net"&gt;http://www.thepoke.net&lt;/A&gt;);&lt;BR&gt;&lt;BR&gt;But i believe it checks for the validity of URL...the format / syntax.., but it really introduce more coding, i hate it :).&lt;BR&gt;&lt;BR&gt;All my previous coding in Beta 1 need to be replaced... LAZY LA!!!!!!!!!&lt;BR&gt;:(( Microsoft always change the syntax and architecture, no wander hard to convince ppl to use .Net. All beta 1 window applications executable run with errors after i install .NET framework beta 2, the worse i need to reformat my system before able to install beta 2 :(((((((((((((((((( i lost some of my important DATA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;BR&gt;ERRRRRR!&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97199" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97199</wfw:commentRss></entry><entry><title>Dear Mr. Stanley.. any Grid development in Singapore?</title><link rel="alternate" type="text/html" href="http://thespoke.net/blogs/ccting/archive/2005/06/06/97181.aspx" /><id>b2b995b1-9c1d-4d25-9f9c-28d53840b74c:97181</id><created>2005-06-06T10:03:00Z</created><content type="text/html" mode="escaped">Dear stanley,&lt;BR&gt;&amp;nbsp; any grid development in singapore? Are you singaporean or Malaysian?&lt;BR&gt;&lt;BR&gt;(Sorry, my english not good so.. i hope u still get what i try to say :D).&lt;BR&gt;&lt;BR&gt;Could you kindly guide me on FREE ASP.NET 2.0 beta 2 servers? i wish to try out the Grid co-allocation and see the difference in the reality ... (i only have Whidbey express beta 2.. and i am not a programmer.. so.. i can only depend on the express IDLE...)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Thanks..&lt;BR&gt;&lt;BR&gt;&lt;img src="http://thespoke.net/aggbug.aspx?PostID=97181" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://thespoke.net/blogs/ccting/commentrss.aspx?PostID=97181</wfw:commentRss></entry></feed>