<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9141427668438094392</id><updated>2024-08-30T18:06:54.251+05:00</updated><title type='text'>Shoaib Sheikh&#39;s Blog</title><subtitle type='html'>public MyLife WriteCode(Requirement specs) {//logics here..}</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-2629700728850315322</id><published>2014-01-10T19:21:00.003+05:00</published><updated>2014-01-10T19:21:33.465+05:00</updated><title type='text'>Opening File in exclusive or shared mode</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Sometimes you need to read file that can be used by other processes as well and in that case you if you just want to read the content of the file and let the other process to write in it, you actually have to open a file in shared mode. Code below can allow you to open a file in shared mode.&lt;br /&gt;&lt;br /&gt;&quot;FileShare.ReadWrite&quot; enum allow you to specify the level of lock you want on the file. Here it will allow other processes to read and write to the file/&lt;br /&gt;&lt;br /&gt;using (Stream s = new FileStream(fullFilePath, &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileMode.Open,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileAccess.Read,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;FileShare.ReadWrite&lt;/b&gt;))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; // here use the stream s&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;In case if you don&#39;t want other processes to interfere or read your file you can specify &quot;FileShare.None&quot; which will acquire exclusive access to the file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;using (Stream s = new FileStream(fullFilePath, &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileMode.Open,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileAccess.Read,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;FileShare.None&lt;/b&gt;))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; // here use the stream s&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/2629700728850315322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/2629700728850315322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2629700728850315322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2629700728850315322'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2014/01/opening-file-in-exclusive-or-shared-mode.html' title='Opening File in exclusive or shared mode'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-5918689634487242628</id><published>2014-01-10T19:00:00.001+05:00</published><updated>2014-01-10T19:00:36.722+05:00</updated><title type='text'>Parallel Processing with Defined Degree of Parallelism using Task Parallelism</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Sometimes you really want to achieve very simple task but when it comes to program it, you end up thinking about dead locks, thread sync, max threads, processing time etc. I have faced a similar situation where i want to process some items mutually exclusive with each other but i can&#39;t process more than 4 items at a time. so i end up using Task Parallelism which makes it really easy and understandable. Other way of doing this is by using ThreadPool and ManualRest locks that is you can say a retro fit for this problem.&lt;br /&gt;
&lt;br /&gt;
To illustrate the problem, let assume you want to parse the html content of a list of urls on a site but you can&#39;t process more than 4 urls at a time to avoid overloading your web server and bandwidth. Here is how it can be easily achieved using Task Parallelism:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //fetch all list of urls to scan.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; List&amp;lt;string&amp;gt; urlsToScan = GetUrlsToScan();&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; //apply parallel foreach on every url but with Degree of Parallelism to 4 threads at a time.&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; Parallel.ForEach(urlsToScan,&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; new ParallelOptions()&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; MaxDegreeOfParallelism = 4&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; }, (s) =&amp;gt;&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; Console.WriteLine(&quot;{0} - Processing url: {1}&quot;, DateTime.Now, s);&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; ScrapUrl(s);&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;
&lt;br /&gt;
Hope this will help a lot to solve many such problems very easily. Happy Coding!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/5918689634487242628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/5918689634487242628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5918689634487242628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5918689634487242628'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2014/01/parallel-processing-with-defined-degree.html' title='Parallel Processing with Defined Degree of Parallelism using Task Parallelism'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-2293980449409661706</id><published>2013-04-22T13:20:00.001+05:00</published><updated>2013-04-22T13:20:28.837+05:00</updated><title type='text'>Shrink Log file SQL Server</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
After prolong usage of heavy DB transactions and CURD operation MS SQL server DB log file starts getting large. This file is important for the DBA because it determine which recovery method your DB is using but in my case as a developer i don&#39;t really have to maintain recovery methods so i rather use to shrink my log file often. Here is the quick snippet to do so so this will help you guys: &lt;br /&gt;
&lt;br /&gt;
USE Northwind&lt;br /&gt;
GO&lt;br /&gt;
Print &#39;Set Recovery Mode To Simple&#39;&lt;br /&gt;
ALTER DATABASE Northwind SET RECOVERY SIMPLE;&lt;br /&gt;
Go&lt;br /&gt;
Print &#39;Set Single User Mode&#39;&lt;br /&gt;
ALTER DATABASE Northwind SET SINGLE_USER WITH ROLLBACK IMMEDIATE&lt;br /&gt;
Go&lt;br /&gt;
print &#39;Shrink Log File&#39;&lt;br /&gt;
Declare @FileName As Varchar(100)&lt;br /&gt;
Set @FileName=(SELECT name From sys.database_Files where type=1)&lt;br /&gt;
DBCC SHRINKFILE(@FileName, 1)&lt;br /&gt;
BACKUP LOG Northwind WITH TRUNCATE_ONLY&lt;br /&gt;
DBCC SHRINKFILE(@FileName, 1)&lt;br /&gt;
Go&lt;br /&gt;
Print &#39;Set Recovery Back To Full&#39;&lt;br /&gt;
ALTER DATABASE Northwind SET RECOVERY FULL;&lt;br /&gt;
Go&lt;br /&gt;
Print &#39;Set User Mode To Multi&#39;&lt;br /&gt;
ALTER DATABASE Northwind SET MULTI_USER WITH NO_WAIT&lt;br /&gt;
Go&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/2293980449409661706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/2293980449409661706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2293980449409661706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2293980449409661706'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2013/04/shrink-log-file-sql-server.html' title='Shrink Log file SQL Server'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-5693721414826674189</id><published>2013-01-07T12:58:00.002+05:00</published><updated>2013-01-07T12:58:29.200+05:00</updated><title type='text'>A Simple Text File logger for .Net apps</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Sometimes you just need a simple kick start while debugging application. Once such scenario is to add simple file based logging. I have created a very simple file based Logger just to add some info to text file and comes handy when you actually want to look at the trace of events specially in a multi-threaded environment that is a little difficult to debug at runtime.&lt;br /&gt;
&lt;br /&gt;
public class Logger&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Log(string str)&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; var file = Path.Combine(HttpContext.Current.Server.MapPath(@&quot;~\&quot;), &quot;log.txt&quot;);&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.IO.File.AppendAllText(file, string.Format(&quot;{0}-{1}{2}&quot;,DateTime.Now, str, Environment.NewLine));&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; }&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/5693721414826674189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/5693721414826674189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5693721414826674189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5693721414826674189'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2013/01/a-simple-text-file-logger-for-net-apps.html' title='A Simple Text File logger for .Net apps'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-4159722611225801622</id><published>2012-08-03T12:15:00.004+05:00</published><updated>2012-08-03T12:17:06.547+05:00</updated><title type='text'>T-SQL script to find out which table is locked</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;color: black;&quot;&gt;
&lt;span style=&quot;font-family: Courier New; font-size: small;&quot;&gt;
This is a handy script and it is common in some scenarios that you get your tabled locked due to some deadlock condition and results in unavailability of such table in whole application. There are other ways to find out e.g: using SSMS can give you handful details of what you want but in case if you want some custom parameters with custom query you will have to understand which tables MS SQL server provides such information. There are tables in sys called dm_tran_locks that shows how many translations running in current system this tables gives us a lot of information but most of it is ids so to get descriptive values you will have to join these with other sys tables like &#39;objects&#39;, &#39;waiting_tasks&#39; etc.. Hope this will help other as well.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New; font-size: small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New; font-size: small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_type&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_database_id&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_associated_entity_id&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;request_mode&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;request_session_id&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t2&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;blocking_session_id&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;o1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;name&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&#39;object&amp;nbsp;name&#39;&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;o1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;type_desc&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&#39;object&amp;nbsp;descr&#39;&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;p1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;partition_id&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&#39;partition&amp;nbsp;id&#39;&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;p1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;rows&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&#39;partition/page&amp;nbsp;rows&#39;&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;a1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;type_desc&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&#39;index&amp;nbsp;descr&#39;&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;,&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;a1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;container_id&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&#39;index/page&amp;nbsp;container_id&#39;&lt;/span&gt;
&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;sys&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;dm_tran_locks&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;AS&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;INNER&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;JOIN&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;sys&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;dm_os_waiting_tasks&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;AS&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t2&lt;/span&gt;
&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;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;lock_owner_address&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: silver;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t2&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_address&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;LEFT&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;OUTER&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;JOIN&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;sys&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;objects&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;o1&lt;/span&gt;
&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;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;o1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: silver;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_associated_entity_id&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;LEFT&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;OUTER&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;JOIN&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;sys&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;partitions&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;p1&lt;/span&gt;
&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;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;p1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;hobt_id&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: silver;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_associated_entity_id&lt;/span&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;LEFT&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;OUTER&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;JOIN&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;sys&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;allocation_units&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;a1&lt;/span&gt;
&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;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;a1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;allocation_unit_id&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: silver;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;t1&lt;/span&gt;&lt;span style=&quot;color: silver;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;resource_associated_entity_id&lt;/span&gt;&amp;nbsp;
&lt;/span&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/4159722611225801622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/4159722611225801622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/4159722611225801622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/4159722611225801622'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/08/t-sql-script-to-find-out-which-table-is.html' title='T-SQL script to find out which table is locked'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-8619291144774410409</id><published>2012-07-26T14:21:00.000+05:00</published><updated>2012-07-26T14:22:28.369+05:00</updated><title type='text'>Easiest way to find how good is your software team</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 400px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;100%&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; style=&quot;width: 379px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left;&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;span style=&quot;color: #333333; font-family: Arial Black,Arial,Helvetica; font-size: medium;&quot;&gt;The Joel Test&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Do you use source control? 
&lt;/li&gt;
&lt;li&gt;Can you make a build in one step? 
&lt;/li&gt;
&lt;li&gt;Do you make daily builds? 
&lt;/li&gt;
&lt;li&gt;Do you have a bug database? 
&lt;/li&gt;
&lt;li&gt;Do you fix bugs before writing new code? 
&lt;/li&gt;
&lt;li&gt;Do you have an up-to-date schedule? 
&lt;/li&gt;
&lt;li&gt;Do you have a spec? 
&lt;/li&gt;
&lt;li&gt;Do programmers have quiet working conditions? 
&lt;/li&gt;
&lt;li&gt;Do you use the best tools money can buy? 
&lt;/li&gt;
&lt;li&gt;Do you have testers? 
&lt;/li&gt;
&lt;li&gt;Do new candidates write code during their interview? 
&lt;/li&gt;
&lt;li&gt;Do you do hallway usability testing? &lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;
&lt;td align=&quot;right&quot; background=&quot;/pictures/ShadedPaperBorders/IMG85.gif&quot; valign=&quot;top&quot; width=&quot;12&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;3&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The neat thing about The Joel Test is that it&#39;s easy to get a quick &lt;b&gt;yes&lt;/b&gt; or &lt;b&gt;no&lt;/b&gt;
 to each question. You don&#39;t have to figure out lines-of-code-per-day or
 average-bugs-per-inflection-point. Give your team 1 point for each 
&quot;yes&quot; answer.&amp;nbsp;The bummer about The Joel Test is that you &lt;i&gt;really shouldn&#39;t &lt;/i&gt;use it to make sure that your nuclear power plant software is safe.&lt;br /&gt;
&lt;br /&gt;
A score of 12 is perfect, 11 is tolerable, but 10 or lower and you&#39;ve
 got serious problems. The truth is that most software organizations are
 running with a score of 2 or 3, and they need &lt;i&gt;serious&lt;/i&gt; help, because companies like Microsoft run at 12 full-time.&lt;br /&gt;
&lt;br /&gt;
Of course, these are not the only factors that determine success or 
failure: in particular, if you have a great software team working on a 
product that nobody wants, well, people aren&#39;t going to want it. And 
it&#39;s possible to imagine a team of &quot;gunslingers&quot; that doesn&#39;t do any of 
this stuff that still manages to produce incredible software that 
changes the world. But, all else being equal, if you get these 12 things
 right, you&#39;ll have a disciplined team that can consistently deliver.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/8619291144774410409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/8619291144774410409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/8619291144774410409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/8619291144774410409'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/07/easiest-way-to-find-how-good-is-your.html' title='Easiest way to find how good is your software team'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-3384304900132335573</id><published>2012-07-19T22:11:00.003+05:00</published><updated>2012-07-19T22:11:27.480+05:00</updated><title type='text'>T-SQL RANK,Row_Number,NTile and Dense_Rank</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;strong&gt;Rank():&lt;br /&gt;
&lt;/strong&gt;Returns the rank of each row within the partition of a result 
set. The rank of a row is one plus the number of ranks that come before 
the row in question.&lt;br /&gt;
Usage: RANK ( )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OVER ( [ &amp;lt; partition_by_clause &amp;gt; ] &amp;lt; order_by_clause &amp;gt; )&amp;nbsp;&lt;br /&gt;

&lt;strong&gt;Dense_Rank() :&lt;br /&gt;
&lt;/strong&gt;Returns the rank of rows within the partition of a result set, 
without any gaps in the ranking. The rank of a row is one plus the 
number of distinct ranks that come before the row in question.&lt;br /&gt;
Usage: DENSE_RANK ( )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OVER ( [ &amp;lt; partition_by_clause &amp;gt; ] &amp;lt; order_by_clause &amp;gt; )&amp;nbsp;&lt;br /&gt;

&lt;strong&gt;Ntile():&lt;br /&gt;
&lt;/strong&gt;Distributes the rows in an ordered partition into a specified 
number of groups. The groups are numbered, starting at one. For each 
row, NTILE returns the number of the group to which the row belongs.&lt;br /&gt;
Usage:&amp;nbsp;NTILE (integer_expression)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OVER ( [ &amp;lt;partition_by_clause&amp;gt; ] &amp;lt; order_by_clause &amp;gt; )&amp;nbsp;&lt;br /&gt;

&lt;strong&gt;Row_Number():&lt;br /&gt;
&lt;/strong&gt;Returns the sequential number of a row within a partition of a result set, starting at 1 for the first row in each partition.&lt;br /&gt;
ROW_NUMBER ( ) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OVER ( [ &amp;lt;partition_by_clause&amp;gt; ] &amp;lt;order_by_clause&amp;gt; )&amp;nbsp;&lt;br /&gt;

Example&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;

All Recordset :&amp;nbsp;&amp;nbsp;&lt;br /&gt;

&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;select &lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; finals&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 364px;&quot;&gt;
&lt;colgroup&gt;&lt;col span=&quot;3&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;108&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot; width=&quot;64&quot;&gt;RecordID&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Name&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Surname&lt;/td&gt;
&lt;td width=&quot;108&quot;&gt;Course&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;4&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;5&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;6&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;7&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;8&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;

&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;select &lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;row_number&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;over&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;by&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; RecordID &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;desc&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; RowNumber &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;,*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; finals&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;

&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 448px;&quot;&gt;
&lt;colgroup&gt;&lt;col span=&quot;1&quot; width=&quot;84&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;3&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;108&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot; width=&quot;84&quot;&gt;RowNumber&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;RecordID&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Name&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Surname&lt;/td&gt;
&lt;td width=&quot;108&quot;&gt;Course&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;4&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;5&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;6&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;7&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;8&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;

&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;select &lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;ntile&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;over&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;by&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; RecordID &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;desc&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; [Ntile] &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;,*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; finals&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;

&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 448px;&quot;&gt;
&lt;colgroup&gt;&lt;col span=&quot;1&quot; width=&quot;84&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;3&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;108&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot; width=&quot;84&quot;&gt;Ntile&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;RecordID&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Name&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Surname&lt;/td&gt;
&lt;td width=&quot;108&quot;&gt;Course&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;

&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;as you see ntile function just divide the&amp;nbsp;scope with given number&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;select &lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;rank&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;over&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;by&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; Surname&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; [Rank]&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; finals&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;


&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 448px;&quot;&gt;
&lt;colgroup&gt;&lt;col span=&quot;1&quot; width=&quot;84&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;3&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;108&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot; width=&quot;84&quot;&gt;Rank&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;RecordID&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Name&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Surname&lt;/td&gt;
&lt;td width=&quot;108&quot;&gt;Course&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;5&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;7&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;7&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;rank function is working like&amp;nbsp; match 
one&amp;nbsp;”Duru” as 1 match&amp;nbsp;another “Duru” as 1 but total count as 2 , next 
surname matches “Lowe” as count +1 as 3 , another “Lowe” as 3&amp;nbsp; ; now 
total count is 4 matching next surname as “Marcel” is count + 1&amp;nbsp;as 5 and
 goes on ….&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;select &lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;dense_rank&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;over&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;by&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; Surname&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; [DenseRank]&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; finals&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;

&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 448px;&quot;&gt;
&lt;colgroup&gt;&lt;col span=&quot;1&quot; width=&quot;84&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;3&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;108&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot; width=&quot;84&quot;&gt;DenseRank&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;RecordID&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Name&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Surname&lt;/td&gt;
&lt;td width=&quot;108&quot;&gt;Course&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: black;&quot;&gt;Dense rank its obvious like shown.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;br /&gt;

&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;if you want to make your denserank number reseting by groups there is a way use PARTITION BY&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;below example reseting ranks by using “partition by” by course column&lt;/span&gt;&lt;br /&gt;
select&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: magenta; font-size: xx-small;&quot;&gt;dense_rank&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;over&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;Partition&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;by&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; course &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;by&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; Surname&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; [DenseRank]&lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;&lt;span style=&quot;color: blue; font-size: xx-small;&quot;&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt; finals&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 448px;&quot;&gt;
&lt;colgroup&gt;&lt;col span=&quot;1&quot; width=&quot;84&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;3&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;108&quot;&gt;&lt;/col&gt;
&lt;col span=&quot;1&quot; width=&quot;64&quot;&gt;&lt;/col&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot; width=&quot;84&quot;&gt;DenseRank&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;RecordID&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Name&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Surname&lt;/td&gt;
&lt;td width=&quot;108&quot;&gt;Course&lt;/td&gt;
&lt;td width=&quot;64&quot;&gt;Point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;85&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Lecture&lt;/td&gt;
&lt;td&gt;90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;1&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Simon&lt;/td&gt;
&lt;td&gt;Duru&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Dany&lt;/td&gt;
&lt;td&gt;Lowe&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;3&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Alice&lt;/td&gt;
&lt;td&gt;Marcel&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td height=&quot;20&quot;&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Bugra&lt;/td&gt;
&lt;td&gt;Postaci&lt;/td&gt;
&lt;td&gt;Mathematics&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;span style=&quot;color: black;&quot;&gt;Thats all folks…&lt;/span&gt; &lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Original Article: http://blog.bugrapostaci.com/2010/01/26/t-sql-rank-dense_rank-ntile-row_number/&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/3384304900132335573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/3384304900132335573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/3384304900132335573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/3384304900132335573'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/07/t-sql-rankrownumberntile-and-denserank.html' title='T-SQL RANK,Row_Number,NTile and Dense_Rank'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-8628263536762501425</id><published>2012-07-06T22:05:00.001+05:00</published><updated>2014-01-10T19:30:11.124+05:00</updated><title type='text'>Reading content of a locked File C# .Net</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Sometimes it might get handy to read some file that may remain in use for very long time by other processes, one possible example of such process involves log files they are mostly locked by their parent processes and sometimes we need to read the content of file without stopping the main process. There could be two possible ways to read an locked file(locked means some other process have exclusive access to that file)&lt;br /&gt;
&lt;br /&gt;
1. Create a Copy of that file using Snapshot copy of volume of course this option is not the optimal solution in case of large files and even snapshot copy is an easy task that can be managed through .net code easily.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Other option that i came across and works for me is by opening file in read/shared mode. You can use this method specially with log4net which don&#39;t acquire lock on file for a very long time.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;FileStream&amp;nbsp;logFileStream&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt;&amp;nbsp;FileStream(&lt;span class=&quot;str&quot;&gt;&quot;c:\test.txt&quot;&lt;/span&gt;,&amp;nbsp;FileMode.Open,&amp;nbsp;FileAccess.Read,&amp;nbsp;FileShare.ReadWrite);
StreamReader&amp;nbsp;logFileReader&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt;&amp;nbsp;StreamReader(logFileStream);

&lt;span class=&quot;kwrd&quot;&gt;while&lt;/span&gt;&amp;nbsp;(!logFileReader.EndOfStream)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;&amp;nbsp;line&amp;nbsp;=&amp;nbsp;logFileReader.ReadLine();
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class=&quot;rem&quot;&gt;Console.WriteLine(line);&lt;/span&gt;
}

&lt;span class=&quot;rem&quot;&gt;// Clean up&lt;/span&gt;
logFileReader.Close();
logFileStream.Close();&lt;/pre&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/8628263536762501425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/8628263536762501425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/8628263536762501425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/8628263536762501425'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/07/reading-content-of-locked-file-c-net.html' title='Reading content of a locked File C# .Net'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-289176122321257766</id><published>2012-07-06T22:02:00.002+05:00</published><updated>2012-07-06T22:02:31.711+05:00</updated><title type='text'>Creating And Setting Custom Principal</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Authenticating a user internaly sets SecurityPrincipal Object&amp;nbsp;at Thread level this patteren is used almost in every .net application&amp;nbsp;e.g Web Application/Web Services/ Desktop applications and even Console Applications.&amp;nbsp;What i needed was to&amp;nbsp;set a&amp;nbsp;custom defined object as security principal so that i can&amp;nbsp;access additional parameters from it. This is what i came accross&amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
This is how i can get/set principal object using a Factory classs.&lt;br /&gt;
&lt;br /&gt;
PrincipalFactory pf = new PrincipalFactory();&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; pf.SetCurrentUser(new User() {UserID=1,Name=&quot;asasd&quot; });&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; var user = pf.GetCurrentUser();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Factory Class Code:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public class PrincipalFactory &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public MyCustomPrincipal GetCurrent()&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; return Thread.CurrentPrincipal as MyCustomPrincipal;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public User GetCurrentUser()&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; var principal = GetCurrent();&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; return (principal != null ? principal.User : null);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void SetCurrentUser(User user)&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; Thread.CurrentPrincipal = new MyCustomPrincipal(user);&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; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My Custom Object&amp;nbsp;that i want to be saved in Principle&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public class User&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int UserID { get; set; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Name { get; set; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally this is my Custom Principal that implements IPrincipal interface&lt;br /&gt;
&amp;nbsp;public class MyCustomPrincipal:IPrincipal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public MyCustomPrincipal(User user)&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; this.User = user;&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; public User User { get; set; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPrincipal Members&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IIdentity Identity&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; get { return WindowsIdentity.GetCurrent(); }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool IsInRole(string role)&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; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/289176122321257766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/289176122321257766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/289176122321257766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/289176122321257766'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/07/creating-and-setting-custom-principal.html' title='Creating And Setting Custom Principal'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-1981354974973052555</id><published>2012-06-28T22:43:00.001+05:00</published><updated>2012-06-28T22:43:22.876+05:00</updated><title type='text'>Code formatter for blog posting</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
After some time searching for a good code formatter i came accross this http://www.manoli.net/csharpformat/. hope this will help other as well.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/1981354974973052555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/1981354974973052555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/1981354974973052555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/1981354974973052555'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/06/code-formatter-for-blog-posting.html' title='Code formatter for blog posting'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-4561776448525421144</id><published>2012-06-28T22:33:00.000+05:00</published><updated>2012-07-06T21:57:03.665+05:00</updated><title type='text'>OData Service Custom Security</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I need to create an Odata service POC that allows to return result only to authenticated users. I google about authentication with OData and found that there are many options like&lt;br /&gt;
&lt;br /&gt;
1.Windows Auth&lt;br /&gt;
2.Forms Auth&lt;br /&gt;
3.Claim based Auth&lt;br /&gt;
4.Anonymous Auth&lt;br /&gt;
&lt;br /&gt;
what i needed is much simple and easy that is somehome related to claim based auth. i have configured a QueryInterceptor on VwUsers to check token parameter and if found return the result otherwise return error. i have used Query String to get the token you can experiment this with http headers as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In web.config you have to set&lt;br /&gt;
&lt;br /&gt;
authentication mode=&quot;off&quot; in authentication element&lt;br /&gt;
&lt;br /&gt;
This will be the service code: &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;
.csharpcode, .csharpcode pre
{
 font-size: small;
 color: black;
 font-family: Consolas, &quot;Courier New&quot;, Courier, Monospace;
 background-color: #ffffff;
 /*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #a31515; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
 background-color: #f4f4f4;
 width: 100%;
 margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt; &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; CareService : DataService&amp;lt;NorthwindEntities&amp;gt;

    {

        &lt;span class=&quot;rem&quot;&gt;// This method is called only once to initialize service-wide policies.&lt;/span&gt;

        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; InitializeService(DataServiceConfiguration config)

        {

            &lt;span class=&quot;rem&quot;&gt;// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.&lt;/span&gt;

            &lt;span class=&quot;rem&quot;&gt;// Examples:&lt;/span&gt;

            &lt;span class=&quot;rem&quot;&gt;// config.SetEntitySetAccessRule(&quot;MyEntityset&quot;, EntitySetRights.AllRead);&lt;/span&gt;

            &lt;span class=&quot;rem&quot;&gt;// config.SetServiceOperationAccessRule(&quot;MyServiceOperation&quot;, ServiceOperationRights.All);&lt;/span&gt;

           

            config.SetEntitySetAccessRule(&lt;span class=&quot;str&quot;&gt;&quot;*&quot;&lt;/span&gt;, EntitySetRights.AllRead);

            &lt;span class=&quot;rem&quot;&gt;//Set a reasonable paging site&lt;/span&gt;

            &lt;span class=&quot;rem&quot;&gt;//config.SetEntitySetPageSize(&quot;*&quot;, 25);&lt;/span&gt;

            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;

        }

        [QueryInterceptor(&lt;span class=&quot;str&quot;&gt;&quot;VwUsers&quot;&lt;/span&gt;)]

        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; Expression&amp;amp;gt; OnQueryVwUsersHeaders()
        {
            &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; request = HttpContext.Current.Request;
            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (!&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;.IsNullOrEmpty(request.QueryString[&lt;span class=&quot;str&quot;&gt;&quot;token&quot;&lt;/span&gt;]))
            {

   

               &lt;span class=&quot;rem&quot;&gt;//token verification here&lt;/span&gt;

                &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; (VwUser p) =&amp;amp;gt; &lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;;

            }

            &lt;span class=&quot;kwrd&quot;&gt;else&lt;/span&gt;

            {

                &lt;span class=&quot;kwrd&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; DataServiceException(401,

                 &lt;span class=&quot;str&quot;&gt;&quot;The user does not have permission to view Users&quot;&lt;/span&gt;);

                &lt;span class=&quot;rem&quot;&gt;//return (VwUser p) =&amp;amp;gt; false;&lt;/span&gt;

            }

        }

    }&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/4561776448525421144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/4561776448525421144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/4561776448525421144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/4561776448525421144'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/06/odata-service-custom-security.html' title='OData Service Custom Security'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-440970900898634636</id><published>2012-06-19T21:50:00.002+05:00</published><updated>2012-06-19T21:53:15.024+05:00</updated><title type='text'>MS SQL sp_executesql problem with query plan</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I have been using sp_executesql to run my query to take advantage of its query plan caching and better security that prevent injection attacks on web application. but after some time working on project i found that when row counts in a table exceeds million records and your query becomes so complex that even might contain 15-30 joins in such queries i found problems with sp_executelsql.&lt;br /&gt;
&lt;br /&gt;
sp_executelsql is meant to re-use compiled query
 plans, so it doesn&#39;t re-sniff parameters when the same query again hits
 it so it ends up in using a plan which might be very slow(will tell you
 why a slower query plan) with the current parameter values.it appears 
to be that sp_executesql uses a different method for choosing indexes 
and apparently it is a broken method compared to a plain text query running in SSMS.&lt;br /&gt;
&lt;br /&gt;
For Example:&lt;br /&gt;
&lt;br /&gt;
What differs is the select query on a table contains many join under a 
sp_executesql is fed via a chain of nested loops while the text query is
 fed via a chain of hash matches. The construction of the views appears 
identical between the two version (which I would expect). Unfortunately,
 the remainder is very complex and they appear to be doing radically 
different things in the middle; even pulling an &quot;actual&quot; execution plan 
doesn&#39;t give actual execution times for the various sub components of 
the query. Really, I can&#39;t see any reason for sp_executesql to be 
choosing anything differently, but it reliably constructs a 
significantly slower plan.&lt;br /&gt;
&lt;br /&gt;
Solution i found so far: &lt;br /&gt;
Parameter sniffing is a solution to this, so you could rename the 
parameters names or you might even swap the column names in where clause
 that cause sp_executesql to recreate a query plan instead of using an 
old slow plan, of course this is not the solution but it won&#39;t cache a 
slower plan for so long.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/440970900898634636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/440970900898634636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/440970900898634636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/440970900898634636'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/06/ms-sql-spexecutesql-problem-with-query.html' title='MS SQL sp_executesql problem with query plan'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-6420775315155221748</id><published>2012-06-14T12:40:00.004+05:00</published><updated>2012-06-14T12:40:39.914+05:00</updated><title type='text'>How Reference Types are created and stored in .net</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;post-text&quot;&gt;
When a reference type is created (class ,  
delegate,  interface,  string, or  object), it&#39;s allocated onto the 
heap..Net has four different heaps: (gen0, gen1, gen2)(Small object 
Heap), and LOH (Large Object Heap). Everything that&#39;s 85k or smaller 
goes on one of the first three heaps, depending on creation time (moved 
from gen0 to gen1 to gen2, etc). Objects larger than 85k get placed on 
the LOH. The LOH is never compacted, so eventually, allocations of the 
type I&#39;m doing will eventually cause an OOM error as objects get 
scattered about that memory space. These are known  as managed heaps.&lt;br /&gt;


To create an object, all you need to do is use the new  keyword; .NET
 will take care of creating, initializing and placing the object on the 
right heap, and reserving any extra memory necessary. After that you can
 pretty much forget about that object, because you don&#39;t have to delete 
it when you&#39;re finished with it.&lt;br /&gt;


when you create a reference type object using new keyword it is 
placed on heap and its reference is used mostly in current running 
stack. there are other possible sources where your object could be used 
as refrence:&lt;br /&gt;


&lt;ol&gt;
&lt;li&gt;global/static object references&lt;/li&gt;
&lt;li&gt;CPU registers&lt;/li&gt;
&lt;li&gt;object finalization references (more later)&lt;/li&gt;
&lt;li&gt;Interop references (.NET objects passed to COM/API calls)&lt;/li&gt;
&lt;li&gt;stack references(mostly used here)&lt;/li&gt;
&lt;/ol&gt;
These 5 are actually GC root nodes from where object reference 
hierarchy is formed.Imagine the classic  Customer class, which usually 
has a collection storing  Order  classes. When an Order  is added to the
 order collection, the collection itself then holds a reference to the 
added order. If the instance of the Customer class had a stack reference
 to it as well.&lt;br /&gt;


this is how hierarchy is formed for a complex object, this is how GC see the references.&lt;br /&gt;


e:g.
stack-reference for Customer object -&amp;gt; reference to List object of orders -&amp;gt; reference individual orders.&lt;br /&gt;


anything that loose reference from these 5 roots is prone to GC.&lt;br /&gt;


how memory is allocated to objects is bit complex and it usally grow by time as specified &lt;a href=&quot;http://msdn.microsoft.com/en-us/magazine/cc163791.aspx&quot; rel=&quot;nofollow&quot;&gt;http://msdn.microsoft.com/en-us/magazine/cc163791.aspx&lt;/a&gt; &lt;br /&gt;


a simple example could be: &lt;br /&gt;


&lt;pre class=&quot;lang-cs prettyprint&quot;&gt;&lt;code&gt;&lt;span class=&quot;kwd&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;MyClass&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; 
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Test&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;Hello world Wazzup!&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; 
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;[]&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; data&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;86000&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;];&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
It&#39;s easy to assume that the size of MyClass  when allocated includes:&lt;br /&gt;


•    19 characters&lt;br /&gt;


•    86,000 bytes.&lt;br /&gt;


In fact, the object&#39;s size will only include general class stuff, and
 the memory required to store the object pointers to the string and the 
byte array (class level variables), which are then separately allocated 
onto the heaps. The string will be allocated on the SOH, and its object 
reference held by the instance of the class; the byte array will be 
allocated onto the LOH, as it&#39;s bigger than 85 KB.&lt;br /&gt;


SOH can be compacted and there will be no fragmentation in it, while LOH can have fragmentation in memory.&lt;br /&gt;



&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/6420775315155221748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/6420775315155221748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/6420775315155221748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/6420775315155221748'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/06/how-reference-types-are-created-and.html' title='How Reference Types are created and stored in .net'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-5934509031664939046</id><published>2012-05-26T01:37:00.001+05:00</published><updated>2012-05-26T01:37:47.293+05:00</updated><title type='text'>Chat Client using TCP Sockets</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This is just a simple chat client to work with the Chat server discussed in earlier post. it is a winform application that contains two textboxes one for message input and other for historical broadcast messages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public partial class Form1 : Form&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder history;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TcpClient client = new TcpClient();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetworkStream clientStream;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Form1()&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; InitializeComponent();&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; this.Load += new EventHandler(Form1_Load);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Form1_Load(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; IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(&quot;127.0.0.1&quot;), 3000);&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; history = new StringBuilder();&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; 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; {&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; client.Connect(serverEndPoint);&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; clientStream = client.GetStream();&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; lblStatus.Text = &quot;Connected to Server&quot;;&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; Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));&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; clientThread.Start(client);&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; catch { lblStatus.Text = &quot;Unable to Connect to Server&quot;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void HandleClientComm(object client)&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; TcpClient tcpClient = (TcpClient)client;&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; NetworkStream clientStream = tcpClient.GetStream();&lt;br /&gt;&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; byte[] message = new byte[4096];&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 bytesRead;&lt;br /&gt;&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 (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; {&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; bytesRead = 0;&lt;br /&gt;&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; //blocks until a client sends a message&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; bytesRead = clientStream.Read(message, 0, 4096);&lt;br /&gt;&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; catch&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; //a socket error has occured&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; break;&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;&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; if (bytesRead == 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;&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; //the client has disconnected from the server&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; break;&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;&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; //message has successfully been received&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; ASCIIEncoding encoder = new ASCIIEncoding();&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; var msg = encoder.GetString(message, 0, bytesRead);&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; System.Diagnostics.Debug.WriteLine(msg);&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; if (string.IsNullOrWhiteSpace(msg))&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; SendMessage(msg);&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; else&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; history.AppendLine(msg);&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; tbHistory.SetPropertyThreadSafe(() =&amp;gt; tbHistory.Text, history.ToString());&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; }&lt;br /&gt;&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; tcpClient.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void btnBroadcast_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; if (clientStream != null &amp;amp;&amp;amp; client != null &amp;amp;&amp;amp; client.Connected)&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; SendMessage(tbMessage.Text);&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; tbMessage.Text = string.Empty;&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;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void SendMessage(string msg)&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; ASCIIEncoding encoder = new ASCIIEncoding();&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; byte[] buffer = encoder.GetBytes(msg);&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; clientStream.Write(buffer, 0, buffer.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; clientStream.Flush();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void btnExit_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; if (clientStream != null &amp;amp;&amp;amp; client != null &amp;amp;&amp;amp; client.Connected)&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; clientStream.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; client.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; }&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;&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; }&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/5934509031664939046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/5934509031664939046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5934509031664939046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5934509031664939046'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/chat-client-using-tcp-sockets.html' title='Chat Client using TCP Sockets'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-2000926570753777686</id><published>2012-05-26T01:35:00.001+05:00</published><updated>2012-07-12T21:11:45.510+05:00</updated><title type='text'>Multi-Threaded TCP Socket Chat Server</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
A multi-threaded chat server using c# .net. It accepts connections from the client and manage data reception in separate threads virtually unlimited clients can connect to this server depending on the machine capacity. This is just a server that will broadcast messages from the client to all other clients. also have some events to show server status and client count change.&lt;br /&gt;
&lt;br /&gt;
Detecting client disconnect in abnormal situations like wire cut, improper shutdown,power failure are not supported by framework, we will have to periodically check for the client whether they are connected or not. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;string, mytcpclient=&quot;&quot;&gt;&lt;string, mytcpclient=&quot;&quot;&gt;&lt;br /&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;
.csharpcode, .csharpcode pre
{
 font-size: small;
 color: black;
 font-family: Consolas, &quot;Courier New&quot;, Courier, Monospace;
 background-color: #ffffff;
 /*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #a31515; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
 background-color: #f4f4f4;
 width: 100%;
 margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;br /&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; Server

    {

        &lt;span class=&quot;rem&quot;&gt;//thread safe dictionary to store list of tcp client connection that will be used to broadcast&lt;/span&gt;

        ConcurrentDictionary AllClients { &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt;; &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;; }
       

        &lt;span class=&quot;preproc&quot;&gt;#region&lt;/span&gt; Events
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;delegate&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; ClientCount(&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; count);
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;event&lt;/span&gt; ClientCount _ClientCountUpdated;
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;event&lt;/span&gt; ClientCount ClientCountUpdated
        {
            add { _ClientCountUpdated += value; }
            remove { _ClientCountUpdated -= value; }
        }

        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; RaiseCount(&lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; count)
        {
            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (_ClientCountUpdated != &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;)
            {
               
                _ClientCountUpdated(count);
            }
        }


        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;delegate&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; ServerStatus(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; status);
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;event&lt;/span&gt; ServerStatus _StatusChanged;
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;event&lt;/span&gt; ServerStatus StatusChanged
        {
            add { _StatusChanged += value; }
            remove { _StatusChanged -= value; }
        }

        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; RaiseStatusChanged(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; status)
        {
            &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (_StatusChanged != &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;)
            {
                _StatusChanged(status);
            }
        }
        &lt;span class=&quot;preproc&quot;&gt;#endregion&lt;/span&gt;

        &lt;span class=&quot;preproc&quot;&gt;#region&lt;/span&gt; Properties
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; TcpListener tcpListener;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; Thread listenThread;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; _TotalClientCount;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; TotalClientCount
        {
            &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt;
            {
                &lt;span class=&quot;kwrd&quot;&gt;lock&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;)
                {
                    &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; _TotalClientCount;
                }
            }
            &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;
            {
                &lt;span class=&quot;kwrd&quot;&gt;lock&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;)
                {
                    _TotalClientCount = value;
                    RaiseCount(_TotalClientCount);
                }
            }
        }
        &lt;span class=&quot;preproc&quot;&gt;#endregion&lt;/span&gt;

        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; Server()
        {
            AllClients = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ConcurrentDictionary();
            MonitorDisconnectedClients();
           
        }

        &lt;span class=&quot;rem&quot;&gt;// this will monitor abnormal network disconnections&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; MonitorDisconnectedClients()
        {
            &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Thread(() =&amp;gt;
            {

                while (&lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;)
                {
                    &lt;span class=&quot;rem&quot;&gt;//an empty broadcast message similar to ping&lt;/span&gt;
                    BroadcastMessage(&lt;span class=&quot;str&quot;&gt;&quot; &quot;&lt;/span&gt;);
               
                    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; clientsToRemove = AllClients.Values.Where(r =&amp;gt; r.LastUpdate &amp;lt; DateTime.Now.AddSeconds(-5)).ToArray();
                    MyTcpClient temp = &lt;span class=&quot;kwrd&quot;&gt;null&lt;/span&gt;;
                    &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; client &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; clientsToRemove)
                    {
                        client.Tcp.Close();
                        AllClients.TryRemove(client.GetHashCode().ToString(), &lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt; temp);
                    }
                    RaiseCount(AllClients.Count);
                    Thread.Sleep(5000);
                }
            }).Start();
        }

      

        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; Start()
        {
            RaiseStatusChanged(&lt;span class=&quot;str&quot;&gt;&quot;Starting...&quot;&lt;/span&gt;);
            &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.tcpListener = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; TcpListener(IPAddress.Any, 3000);
            &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.listenThread = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Thread(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ThreadStart(ListenForClients));
            &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.listenThread.Start();
            RaiseStatusChanged(&lt;span class=&quot;str&quot;&gt;&quot;Listening...&quot;&lt;/span&gt;);
        }

        &lt;span class=&quot;rem&quot;&gt;//start to listen to tcp connections&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; ListenForClients()
        {
            &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.tcpListener.Start();

            while (&lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;)
            {
                &lt;span class=&quot;rem&quot;&gt;//blocks until a client has connected to the server&lt;/span&gt;
                TcpClient client = &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.tcpListener.AcceptTcpClient();
                &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; myClient = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; MyTcpClient(client);
                &lt;span class=&quot;rem&quot;&gt;//add client connection to to the thread safe dictionary&lt;/span&gt;
                AllClients.AddOrUpdate(myClient.GetHashCode().ToString(), myClient, (key, value) =&amp;gt; { &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; value; });
                &lt;span class=&quot;rem&quot;&gt;//create a thread to handle communication&lt;/span&gt;
                &lt;span class=&quot;rem&quot;&gt;//with connected client&lt;/span&gt;
                Thread clientThread = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Thread(&lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ParameterizedThreadStart(HandleClientComm));
                clientThread.Start(myClient);
                RaiseCount(AllClients.Count);
            }
        }

        &lt;span class=&quot;rem&quot;&gt;//this will handle messages comming from the client in a seperate thread&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; HandleClientComm(&lt;span class=&quot;kwrd&quot;&gt;object&lt;/span&gt; client)
        {
            MyTcpClient tcpClient = (MyTcpClient)client;
            NetworkStream clientStream = tcpClient.Tcp.GetStream();

            &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[] message = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[4096];
            &lt;span class=&quot;kwrd&quot;&gt;int&lt;/span&gt; bytesRead;

            while (&lt;span class=&quot;kwrd&quot;&gt;true&lt;/span&gt;)
            {
                bytesRead = 0;

                &lt;span class=&quot;kwrd&quot;&gt;try&lt;/span&gt;
                {
                    &lt;span class=&quot;rem&quot;&gt;//blocks until a client sends a message&lt;/span&gt;
                    bytesRead = clientStream.Read(message, 0, 4096);
                   
                }
                &lt;span class=&quot;kwrd&quot;&gt;catch&lt;/span&gt;
                {
                    &lt;span class=&quot;rem&quot;&gt;//a socket error has occured&lt;/span&gt;
                    &lt;span class=&quot;kwrd&quot;&gt;break&lt;/span&gt;;
                }

                &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (bytesRead == 0)
                {
                   
                    AllClients.TryRemove(tcpClient.GetHashCode().ToString(), &lt;span class=&quot;kwrd&quot;&gt;out&lt;/span&gt; tcpClient);
                    RaiseCount(AllClients.Count);
                    &lt;span class=&quot;rem&quot;&gt;//the client has disconnected from the server&lt;/span&gt;
                    &lt;span class=&quot;kwrd&quot;&gt;break&lt;/span&gt;;
                }

                &lt;span class=&quot;rem&quot;&gt;//message has successfully been received&lt;/span&gt;
                ASCIIEncoding encoder = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ASCIIEncoding();
                &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; msg = encoder.GetString(message, 0, bytesRead);
                System.Diagnostics.Debug.WriteLine(msg);
                tcpClient.LastUpdate = DateTime.Now;
                &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt;(!&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(msg))
                    BroadcastMessage(msg);
            }

            tcpClient.Tcp.Close();
        }

        &lt;span class=&quot;rem&quot;&gt;// this is used to broadcast messages to all other clients, also in another thread&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; BroadcastMessage(&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; msg)
        {
            &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; Thread(() =&amp;gt; {
                &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; item &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; AllClients)
                {
                    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; tcpClient = item.Value;
                    &lt;span class=&quot;kwrd&quot;&gt;if&lt;/span&gt; (tcpClient.Tcp.Connected)
                    {
                        NetworkStream clientStream = tcpClient.Tcp.GetStream();
                        ASCIIEncoding encoder = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ASCIIEncoding();
                        &lt;span class=&quot;kwrd&quot;&gt;byte&lt;/span&gt;[] buffer = encoder.GetBytes(msg);
                        clientStream.Write(buffer, 0, buffer.Length);
                        clientStream.Flush();
                    }
                }
            }).Start();
        }

      
        &lt;span class=&quot;rem&quot;&gt;//used to close down all tcp connections&lt;/span&gt;
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; Close()
        {
            &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; client &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; AllClients)
            {
                client.Value.Tcp.Close();
            }
        }
    }

&lt;span class=&quot;rem&quot;&gt;//MyTcpClent is just a wrapper to hold updates of a tcp client connection&lt;/span&gt;

 &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;class&lt;/span&gt; MyTcpClient
    {
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; MyTcpClient(TcpClient client)
        {
            Tcp = client;
            LastUpdate = DateTime.Now;
        }
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; TcpClient Tcp { &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt;; &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;; }
        &lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; DateTime LastUpdate { &lt;span class=&quot;kwrd&quot;&gt;get&lt;/span&gt;; &lt;span class=&quot;kwrd&quot;&gt;set&lt;/span&gt;; }
    }&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/2000926570753777686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/2000926570753777686' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2000926570753777686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2000926570753777686'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/multi-threaded-tcp-socket-chat-server.html' title='Multi-Threaded TCP Socket Chat Server'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-4789954958980591880</id><published>2012-05-25T21:53:00.001+05:00</published><updated>2012-05-25T21:53:43.576+05:00</updated><title type='text'>Public IP Address Finder in C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This is a task i have been working on to find out the public ip of a computer running behind firewall or NAT.&lt;br /&gt;
It uses the trace route method using ping class and then filter out local IP address using regex and find the first available public IP and try to send it as an email, email part is not shown. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public class IPFinder&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal void MyPublicIPAndSend()&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; Console.WriteLine(&quot;Wait finding Public IP...&quot;);&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; var firstPublicIP = Traceroute(&quot;www.google.com&quot;).Where(r =&amp;gt; !isIPLocal(r)).FirstOrDefault();&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; if (firstPublicIP != null)&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; SendEmail(&quot;My Public IP&quot;, firstPublicIP.ToString());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool isIPLocal(IPAddress ipaddress)&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; // find if ip is localhost&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; // find if ip starts with 10.&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; //find if ip falls in 172.1 to 172.31&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; //find if ip is 192.168..&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; var regEx = new Regex(@&quot;(^127\.0\.0\.1)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)&quot;);&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; return regEx.Match(ipaddress.ToString()).Success;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private IPAddress[] Traceroute(string ipAddressOrHostName)&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; List&lt;string&gt; result = new List&lt;string&gt;();&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; //resolve name to ip&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; IPAddress ipAddress = Dns.GetHostEntry(ipAddressOrHostName).AddressList[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; using (Ping pingSender = new Ping())&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; PingOptions pingOptions = new PingOptions();&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; byte[] bytes = new byte[2];&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; pingOptions.DontFragment = 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; pingOptions.Ttl = 1;&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; //30 hops just to safe guard infinite loop&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; int maxHops = 30;&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; for (int i = 1; i &amp;lt; maxHops + 1; i++)&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; //send icmp echo to ipAddress with timout 5000 ms&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; PingReply pingReply = pingSender.Send(&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; ipAddress,&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; 5000,&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; bytes, pingOptions);&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; result.Add(pingReply.Address == null ? string.Empty : pingReply.Address.ToString());&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; // keep looping until pingreply is success, means reached destination&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; if (pingReply.Status == IPStatus.Success)&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; break;&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; pingOptions.Ttl++;&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; }&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; IPAddress temp = IPAddress.Parse(&quot;127.0.0.1&quot;);&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; return result.Where(r =&amp;gt; IPAddress.TryParse(r, out temp)).Select(r =&amp;gt; IPAddress.Parse(r)).ToArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool SendEmail(string subject, string body)&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; Console.WriteLine(subject);&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; Console.WriteLine(body);&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; return true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/string&gt;&lt;/string&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/4789954958980591880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/4789954958980591880' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/4789954958980591880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/4789954958980591880'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/public-ip-address-finder-in-c.html' title='Public IP Address Finder in C#'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-2245374575818745533</id><published>2012-05-25T15:06:00.001+05:00</published><updated>2012-05-25T15:06:07.761+05:00</updated><title type='text'>Network Interface details using .Net</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I want to show All my PC&#39;s IP Addresses with their subnet masks. this .net don&#39;t have any property called subnet mask but it has IPv4Mask property that i used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;NetworkInterface[] Interfaces = NetworkInterface.GetAllNetworkInterfaces();&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; foreach (NetworkInterface Interface in Interfaces)&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; if (Interface.NetworkInterfaceType == NetworkInterfaceType.Loopback) continue;&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; Console.WriteLine(Interface.Description);&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; UnicastIPAddressInformationCollection UnicastIPInfoCol = Interface.GetIPProperties().UnicastAddresses;&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; foreach (UnicastIPAddressInformation UnicatIPInfo in UnicastIPInfoCol)&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; Console.WriteLine(&quot;\tIP Address is {0}&quot;, UnicatIPInfo.Address);&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; Console.WriteLine(&quot;\tSubnet Mask is {0}&quot;, UnicatIPInfo.IPv4Mask);&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; }&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/2245374575818745533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/2245374575818745533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2245374575818745533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/2245374575818745533'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/network-interface-details-using-net.html' title='Network Interface details using .Net'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-1447573971499590302</id><published>2012-05-25T10:49:00.002+05:00</published><updated>2012-05-25T10:50:15.110+05:00</updated><title type='text'>Trace Route using .Net Framwrok</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I was working on a task where i need to work with trace route command if ICMP and in .net i was searching for any managed method of doing so, this is what i came across it seems like a simple and good approach towards trace route using .net&lt;br /&gt;
&lt;br /&gt;
public string Traceroute(string ipAddressOrHostName)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IPAddress ipAddress = Dns.GetHostEntry(ipAddressOrHostName).AddressList[0];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder traceResults = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; using(Ping pingSender = new Ping())&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PingOptions pingOptions = new PingOptions();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stopwatch stopWatch = new Stopwatch();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] bytes = new byte[32];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pingOptions.DontFragment = true;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pingOptions.Ttl = 1;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int maxHops = 30;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; traceResults.AppendLine(&lt;br /&gt;
&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; string.Format(&lt;br /&gt;
&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; &quot;Tracing route to {0} over a maximum of {1} hops:&quot;, &lt;br /&gt;
&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; ipAddress, &lt;br /&gt;
&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; maxHops));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; traceResults.AppendLine();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 1; i &amp;lt; maxHops + 1; i++)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&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; stopWatch.Reset();&lt;br /&gt;
&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; stopWatch.Start();&lt;br /&gt;
&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; PingReply pingReply = pingSender.Send(&lt;br /&gt;
&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; ipAddress, &lt;br /&gt;
&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; 5000, &lt;br /&gt;
&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; new byte[32], pingOptions);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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; stopWatch.Stop();&lt;br /&gt;
&lt;br /&gt;
&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; traceResults.AppendLine(&lt;br /&gt;
&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; string.Format(&quot;{0}\t{1} ms\t{2}&quot;, &lt;br /&gt;
&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; i, &lt;br /&gt;
&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; stopWatch.ElapsedMilliseconds, &lt;br /&gt;
&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; pingReply.Address));&lt;br /&gt;
&lt;br /&gt;
&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; if(pingReply.Status == IPStatus.Success)&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; traceResults.AppendLine();&lt;br /&gt;
&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; traceResults.AppendLine(&quot;Trace complete.&quot;); break;&lt;br /&gt;
&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;
&lt;br /&gt;
&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; pingOptions.Ttl++;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return traceResults.ToString();&lt;br /&gt;
}&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/1447573971499590302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/1447573971499590302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/1447573971499590302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/1447573971499590302'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/i-was-working-on-task-where-i-need-to.html' title='Trace Route using .Net Framwrok'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-3530062807143743501</id><published>2012-05-23T12:13:00.003+05:00</published><updated>2012-05-23T12:13:46.914+05:00</updated><title type='text'>Tifflib Convert multipage Tiffs to a single stitched jpeg image</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I was facing issues reading 8 bit tiff files using .net GDI+ as it do not support all Tiff formats so i opt to use tifflib(an open source library to manipulate tiff files) to read the tiff images and create a 16bit tiff image from it and then create a single stitched jpeg image. converting tiffs to jpeg is not ideal because jpeg will be very large in size but i have done this because in silverlight we have no support to display tiff natively.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Hope this will help the others&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;public bool convertTiffToJpg(string sourceFile, string targetFile)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&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 response = false;&lt;br /&gt;&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; 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; {&lt;br /&gt;&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; // Get individual Images from the original image&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; //Image sourceImage = Bitmap.FromFile(sourceFile,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; Image sourceImage = getBitmap8Bit(sourceFile);&lt;br /&gt;&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; var total = sourceImage.GetFrameCount(FrameDimension.Page);&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; var pageNumbers = Enumerable.Range(0, total).ToArray();&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; Image[] sourceImages = new Image[pageNumbers.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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; pageNumbers.Length; i++)&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; sourceImage.SelectActiveFrame(FrameDimension.Page, pageNumbers[i]);&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; float width = sourceImage.Width;&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; float height = sourceImage.Height;&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; ResizeImage(1024, sourceImage.Height, ref width, ref height);&lt;br /&gt;&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; using (var returnImage = new Bitmap(sourceImage, (int)width, (int)height))&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; using (MemoryStream ms = new MemoryStream())&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; {&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; returnImage.Save(ms, ImageFormat.Jpeg);&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; sourceImages[i] = Image.FromStream(ms);&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; }&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; }&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; var p = new System.Collections.ArrayList();&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; p.Add(Color.Black);&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; p.Add(Color.Gray);&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; p.Add(Color.LightGray);&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; p.Add(Color.DarkGray);&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; p.Add(Color.White);&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; PaletteQuantizer quantizer = new PaletteQuantizer(p);&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; //OctreeQuantizer quantizer = new OctreeQuantizer(2,2);&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; //var quantizer = new WuQuantizer();&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; // Merge individual Images into one Image&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; var totalHeight = sourceImages.FirstOrDefault().Height * total;&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; var totalWidth = sourceImages.FirstOrDefault().Width;&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; using (var finalImage = new Bitmap(totalWidth, totalHeight))&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;&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; using (var g = Graphics.FromImage(finalImage))&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; g.InterpolationMode = InterpolationMode.Low;&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; g.PixelOffsetMode = PixelOffsetMode.HighSpeed;&lt;br /&gt;&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; // All other pages&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; for (int i = 0; i &amp;lt; pageNumbers.Length; i++)&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; {&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; g.DrawImage(sourceImages[i], new Point(0, sourceImages[i].Height * i));&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; }&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;&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; //finalImage.MakeTransparent(Color.White);&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; using (var toout = quantizer.Quantize(finalImage))&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; ImageCodecInfo Codec = ImageCodecInfo.GetImageEncoders().Where(codec =&amp;gt; codec.FormatID.Equals(ImageFormat.Png.Guid)).FirstOrDefault();&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; toout.Save(targetFile, Codec, GetCodedParams(null));&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;&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;&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; response = 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; }&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; catch (Exception ex)&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; Console.WriteLine(ex.Message);&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;&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; return response;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;private static Image getBitmap8Bit(string inputName)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&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; Encoder enc = Encoder.SaveFlag;&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; EncoderParameters ep = new EncoderParameters(1);&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; ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);&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; ImageCodecInfo info = GetEncoderInfo();&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; foreach (ImageCodecInfo ice in ImageCodecInfo.GetImageEncoders())&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; if (ice.MimeType == &quot;image/tiff&quot;)&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; info = ice;&lt;br /&gt;&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; MemoryStream ms = new MemoryStream();&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; Bitmap result = null;&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; using (Tiff tif = Tiff.Open(inputName, &quot;r&quot;))&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; short dirs = tif.NumberOfDirectories();&lt;br /&gt;&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; for (int page = 0; page &amp;lt; dirs; page++)&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; if (tif.SetDirectory((short)page))&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; FieldValue[] value = tif.GetField(TiffTag.IMAGEWIDTH);&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; int width = value[0].ToInt();&lt;br /&gt;&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; value = tif.GetField(TiffTag.IMAGELENGTH);&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; int height = value[0].ToInt();&lt;br /&gt;&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; int imageSize = height * width;&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; int[] raster = new int[imageSize];&lt;br /&gt;&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; if (tif.ReadRGBAImage(width, height, raster))&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; {&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; var bitmap = new Bitmap(width, height);&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; for (int i = 0; i &amp;lt; bitmap.Width; ++i)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int j = 0; j &amp;lt; bitmap.Height; ++j)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitmap.SetPixel(i, j, getSample(i, j, raster, width, height));&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; if (result == null)&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; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = bitmap;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result.Save(ms, info, ep);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);&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; }&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; else&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; {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result.SaveAdd((bitmap as Image), ep);&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; }&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; }&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; }&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; ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);&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; result.SaveAdd(ep);&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; return Image.FromStream(ms);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/3530062807143743501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/3530062807143743501' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/3530062807143743501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/3530062807143743501'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/tifflib-convert-multipage-tiffs-to.html' title='Tifflib Convert multipage Tiffs to a single stitched jpeg image'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-152832228466609104</id><published>2012-05-20T17:53:00.001+05:00</published><updated>2012-05-20T17:53:37.327+05:00</updated><title type='text'>ASP.Net MVC Views and Server Tags</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
ASP.Net MVC normal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%&amp;nbsp;&amp;nbsp; --- used to place .net code if else conditions etc --- %&amp;gt;&lt;br /&gt;
&amp;lt;%&amp;nbsp; Response.Write(str) %&amp;gt;&amp;nbsp; is equals to &amp;lt;%= str %&amp;gt;&amp;nbsp; // this is kind of a shortcut of Response.Write in MVC&lt;br /&gt;
&lt;br /&gt;
now the problem is to precent plain string to be injected in response. in asp.net mvc3 we used &amp;lt;%= Html.Encode(str) %&amp;gt; to prevent script injection etc.. but in asp.net mvc 4 a new syntax is introduced as shortcut to Response.Write and Html.Encode, &amp;lt;%: str %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASP.Net MVC razor&lt;br /&gt;
&lt;br /&gt;
@{ --- place if else conditions multiple lines etc ---}&lt;br /&gt;
@--- single line of code---&amp;nbsp;&amp;nbsp; can also be used as shortcut to Response.Write @str&lt;br /&gt;
@{ Html.RenderPartial(&quot;view&quot;) }///Render Prefix methods will not return anything but void, they directly write to the response stream.&lt;br /&gt;
@Html.Partial /// returns htmlstring that can be used to store in some variable to print at some latter point eg:&lt;br /&gt;
@{var output = Html.Partial(&quot;View&quot;,model);} // assign html to variable&lt;br /&gt;
@output //send html to response&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/152832228466609104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/152832228466609104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/152832228466609104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/152832228466609104'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/aspnet-mvc-views-and-server-tags.html' title='ASP.Net MVC Views and Server Tags'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-5737510847880515360</id><published>2012-05-10T10:48:00.001+05:00</published><updated>2012-05-10T10:48:52.054+05:00</updated><title type='text'>Change Image Url in ASP.Net using HttpModule to point to some CDN</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;pre&gt;&lt;code&gt;This is something i have created to change the image urls at runtime to point those url at some CDN server instead of my own server.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;What i have done is simply intercept the a page if it ends with .aspx and them apply filter using my own created stream that will check the html markup and replace image url to CDN url.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;pre&gt;&lt;code&gt;ASPX Code:&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;asp:image id=&quot;Image1&quot; imageurl=&quot;Image/Src/Logo.jpg&quot; runat=&quot;server&quot;&gt;&lt;/asp:image&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt; or even you can use &lt;img /&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;HttpModule Code: &lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;public class CDNImageModule : IHttpModule
    {
        public void Dispose()
        {

        }
        public void Init(HttpApplication context)
        {
                context.BeginRequest += (o, e) =&amp;gt;
                {
                    if (context.Request.RawUrl.EndsWith(&quot;.aspx&quot;))
                    {
                        var _watcher = new StreamWatcher(context.Response.Filter);
                        context.Response.Filter = _watcher;
                    }
                };
        }
    }

    public class StreamWatcher : Stream
    {

        public StreamWatcher(Stream sink)
        {
            _sink = sink;
        }

        private Stream _sink;

        #region Properites

        public override bool CanRead
        {
            get { return true; }
        }

        public override bool CanSeek
        {
            get { return true; }
        }

        public override bool CanWrite
        {
            get { return true; }
        }

        public override void Flush()
        {
            _sink.Flush();
        }

        public override long Length
        {
            get { return 0; }
        }

        private long _position;
        public override long Position
        {
            get { return _position; }
            set { _position = value; }
        }

        #endregion

        #region Methods

        public override int Read(byte[] buffer, int offset, int count)
        {
            return _sink.Read(buffer, offset, count);
        }

        public override long Seek(long offset, SeekOrigin origin)
        {
            return _sink.Seek(offset, origin);
        }

        public override void SetLength(long value)
        {
            _sink.SetLength(value);
        }

        public override void Close()
        {
            _sink.Close();
        }

        public override void Write(byte[] buffer, int offset, int count)
        {
            byte[] data = new byte[count];
            Buffer.BlockCopy(buffer, offset, data, 0, count);
            string html = System.Text.Encoding.Default.GetString(buffer);

            TransformString(ref html);

            byte[] outdata = System.Text.Encoding.Default.GetBytes(html);
            _sink.Write(outdata, 0, outdata.GetLength(0));
        }

        #endregion


        void TransformString(ref string input)
        {

            string regExPatternForImgTags = &quot;&lt;img[^&gt;]* src=\\\&quot;([^\\\&quot;]*)\\\&quot;[^&amp;gt;]*&amp;gt;&quot;; //this will match all the &lt;img /&gt; tags with src attribute, you may need to extend this. 

            MatchEvaluator evaluator = new MatchEvaluator(RewriteImageSrc);


            input = Regex.Replace(input, regExPatternForImgTags, evaluator);


        }

        public static string RewriteImageSrc(Match match)
        {
            return match.Value.Replace(&quot;src=\&quot;&quot;, &quot;src=\&quot;http://img.mydomain.com/&quot;);

        }&lt;/img[^&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;} &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/5737510847880515360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/5737510847880515360' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5737510847880515360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/5737510847880515360'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/05/change-image-url-in-aspnet-using.html' title='Change Image Url in ASP.Net using HttpModule to point to some CDN'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-1044234365134519774</id><published>2012-03-19T09:57:00.004+05:00</published><updated>2012-03-19T09:57:58.460+05:00</updated><title type='text'>Stupeflix REST API client in C# .Net</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Last week i was working on a project that is going to consume stupeflix REST API to create videos. Stupeflix provides its API client as RESTful API and they also provide so much details on how to for different platform like python, java, php etc while i am a die heart fan of .net and i was interested in accessing their service using .net I feel an immense need for some help/how to about their API. Fortunately i was also related with java platform a little bit so i take their code from github and start porting the code from java to C3 .net after a few hours i manage to get it working fine. i hope this effort will also help other in creating awesome videos using a stunning API by stupeflix.&lt;br /&gt;
&lt;br /&gt;
this is what i end up with:&lt;br /&gt;
&lt;br /&gt;
https://github.com/shoaibshaikh/Stupeflix-API-Client-C-.Net&lt;br /&gt;
&lt;br /&gt;
API in other languages:&lt;br /&gt;
&lt;br /&gt;
https://github.com/Stupeflix/Stupeflix-API-Client&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/1044234365134519774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/1044234365134519774' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/1044234365134519774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/1044234365134519774'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/03/stupeflix-rest-api-client-in-c-net.html' title='Stupeflix REST API client in C# .Net'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-7889960639972726724</id><published>2012-03-16T15:58:00.002+05:00</published><updated>2012-03-16T15:58:52.444+05:00</updated><title type='text'>WCF Duplex Service Hosted in A Console Application</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Create Service Contracts&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;[ServiceContract(Namespace = &quot;Silverlight&quot;, CallbackContract = typeof(IDuplexClient))]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface IDuplexService&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Order(string name, int quantity);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceContract]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface IDuplexClient&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract(IsOneWay = true)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Receive(Order order);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceContract]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface IPolicyRetriever&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract, WebGet(UriTemplate = &quot;/clientaccesspolicy.xml&quot;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stream GetSilverlightPolicy();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract, WebGet(UriTemplate = &quot;/crossdomain.xml&quot;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stream GetFlashPolicy();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Implement Service Contracts:&lt;br /&gt;
&amp;nbsp; public class OrderService : IDuplexService,IPolicyRetriever&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Dictionary&lt;string, iduplexclient=&quot;&quot;&gt; Clients = new Dictionary&lt;string, iduplexclient=&quot;&quot;&gt;();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDuplexClient client;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string orderName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int orderQuantity;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Order(string name, int quantity)&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; // Grab the client callback channel.&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; client = OperationContext.Current.GetCallbackChannel&lt;iduplexclient&gt;();&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; orderName = name;&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; orderQuantity = quantity;&lt;br /&gt;&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; Clients[name] = client;&lt;br /&gt;&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; // Pretend service is processing and will call client back in 5 seconds.&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; using (Timer timer = new Timer(new TimerCallback(CallClient), null, 5000, 5000))&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; Thread.Sleep(11000);&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;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool processed = false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void CallClient(object o)&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; Order order = new Order();&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; order.Payload = new List&lt;string&gt;();&lt;br /&gt;&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; // Process order.&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; if (processed)&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; // Pretend service is fulfilling the order.&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; while (orderQuantity-- &amp;gt; 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;&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; order.Payload.Add(orderName + orderQuantity);&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;&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; order.Status = OrderStatus.Completed;&lt;br /&gt;&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; else&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; // Pretend service is processing payment.&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; order.Status = OrderStatus.Processing;&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; processed = 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; }&lt;br /&gt;&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; // Call client back.&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; client.Receive(order);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stream StringToStream(string result)&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; WebOperationContext.Current.OutgoingResponse.ContentType = &quot;application/xml&quot;;&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; return new MemoryStream(Encoding.UTF8.GetBytes(result));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Stream GetSilverlightPolicy()&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; string result = @&quot;&lt;!--?xml version=&quot;&quot;1.0&quot;&quot; encoding=&quot;&quot;utf-8&quot;&quot;?--&gt;&lt;br /&gt;&lt;access-policy&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;cross-domain-access&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;policy&gt;&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;allow-from *&quot;&quot;=&quot;&quot; http-request-headers=&quot;&quot;&gt;&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;domain *&quot;&quot;=&quot;&quot; uri=&quot;&quot;&gt;&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;/domain&gt;&lt;/allow-from&gt;&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;grant-to&gt;&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;resource &quot;&quot;=&quot;&quot; include-subpaths=&quot;&quot; path=&quot;&quot; true&quot;&quot;=&quot;&quot;&gt;&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;/resource&gt;&lt;/grant-to&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/policy&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/cross-domain-access&gt;&lt;/access-policy&gt;&quot;;&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; return StringToStream(result);&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; public Stream GetFlashPolicy()&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; string result = @&quot;&lt;!--?xml version=&quot;&quot;1.0&quot;&quot;?--&gt;&lt;br /&gt;&lt;br /&gt;&lt;cross-domain-policy&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;allow-access-from *&quot;&quot;=&quot;&quot; domain=&quot;&quot;&gt;&lt;br /&gt;&lt;/allow-access-from&gt;&lt;/cross-domain-policy&gt;&quot;;&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; return StringToStream(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/string&gt;&lt;/iduplexclient&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;br /&gt;
&lt;br /&gt;
Running the service:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;static void Main(string[] args)&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; //Creating a new ServiceHost instance with two base addresses: one for the http and second for the net.tcp&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; using (ServiceHost sh = new ServiceHost(typeof(OrderService), new Uri(&quot;http://localhost:72/Service&quot;)))&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; //Adding the endpoints to the ServiceHost&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; //sh.AddServiceEndpoint(typeof(IDuplexService), new NetTcpBinding(), &quot;&quot;);&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; sh.AddServiceEndpoint(typeof(IDuplexService), new PollingDuplexHttpBinding(), &quot;&quot;);&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; sh.AddServiceEndpoint(typeof(IPolicyRetriever), new WebHttpBinding(), &quot;http://localhost:72/&quot;).Behaviors.Add(new WebHttpBehavior());&lt;br /&gt;&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; //Creating a new Service Behavior&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; ServiceMetadataBehavior smb = new ServiceMetadataBehavior();&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; smb.HttpGetEnabled = 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; sh.Description.Behaviors.Add(smb);&lt;br /&gt;&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; //Opening the ServiceHost for incoming connections&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; sh.Open();&lt;br /&gt;&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; System.Console.WriteLine(&quot;Waiting for connections...&quot;);&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; System.Console.ReadLine();&lt;br /&gt;&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; //Close opened ServiceHost object&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; sh.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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
before you actually run the service you will have register the url of service to ACL.&lt;br /&gt;
on vista and win 2008&lt;br /&gt;
&lt;br /&gt;
C:\Windows\system32&amp;gt;netsh http add urlacl url=http://+:72/Service/ user=shoaibpc-3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use httpcfg for winxp&lt;br /&gt;&amp;nbsp;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/7889960639972726724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/7889960639972726724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/7889960639972726724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/7889960639972726724'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/03/wcf-duplex-service-hosted-in-console.html' title='WCF Duplex Service Hosted in A Console Application'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-6283529604641610319</id><published>2012-03-08T18:12:00.002+05:00</published><updated>2012-03-08T18:12:25.080+05:00</updated><title type='text'>Caliburn Micro</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This is what i found informative about learning CliburnMirco&lt;br /&gt;
&lt;br /&gt;
http://sonyarouje.com/2010/11/07/an-introduction-to-caliburn-micro/&lt;br /&gt;
http://sonyarouje.com/2011/02/16/introduction-to-caliburn-micro-part-2/&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/6283529604641610319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/6283529604641610319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/6283529604641610319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/6283529604641610319'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/03/caliburn-micro.html' title='Caliburn Micro'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9141427668438094392.post-784441714946191030</id><published>2012-02-14T11:59:00.000+05:00</published><updated>2012-02-14T11:59:00.221+05:00</updated><title type='text'>iTextSharp and font size of fields.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Acro Fields are easy way to create pdf template and while working with it i need a some way to increase font size of the fields.&lt;br /&gt;
&lt;br /&gt;AcroFields fields = stamper.AcroFields; &lt;br /&gt;
bool set = fields.SetFieldProperty(&quot;Name&quot;, &quot;textsize&quot;, 54.0f, null);&lt;br /&gt;fields.SetField(&quot;Name&quot;, string.Format(&quot;{0} {1}&quot;,item.FirstName,item.LastName));&lt;br /&gt;&lt;br /&gt;54.0f is size in pixels. you will have to set property before setting a value in the field.&lt;br /&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shoaibsheikh.blogspot.com/feeds/784441714946191030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9141427668438094392/784441714946191030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/784441714946191030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9141427668438094392/posts/default/784441714946191030'/><link rel='alternate' type='text/html' href='http://shoaibsheikh.blogspot.com/2012/02/itextsharp-and-font-size-of-fields.html' title='iTextSharp and font size of fields.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/06619004955653367970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>