- Posted by Admin on May 13, 2009
You can use the below class for fetching the contents of any HTTP URL using the HTTP GET method. This makes use the webrequest classes of .NET class library.
public static class GetUrl
{
public static string FetchURL(string url)
{
const int bufSizeMax = 65536; // max read buffer size conserves memory
const int bufSizeMin = 8192; // min size prevents numerous small reads
StringBuilder sb;
// A WebException is thrown if HTTP request fails
try
{
// Create an HttpWebRequest using WebRequest.Create (see .NET docs)!
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = WebRequestMethods.Http.Get;
// Execute the request and obtain the response stream
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
// Content-Length header is not trustable, but makes a good hint.
// Responses longer than int size will throw an exception here!
int length = (int)response.ContentLength;
// Use Content-Length if between bufSizeMax and bufSizeMin
int bufSize = bufSizeMin;
if (length > bufSize)
bufSize = length > bufSizeMax ? bufSizeMax : length;
// Allocate buffer and StringBuilder for reading response
byte[] buf = new byte[bufSize];
sb = new StringBuilder(bufSize);
// Read response stream until end
while ((length = responseStream.Read(buf, 0, buf.Length)) != 0)
sb.Append(Encoding.UTF8.GetString(buf, 0, length));
return sb.ToString();
}
catch (Exception ex)
{
sb = new StringBuilder(ex.Message);
return sb.ToString();
}
}
}
EXAMPLE
string htmlcontent = GetUrl.FetchURL("http://ask4asp.net");
This will fetch the html content of the ask4asp.net home page.
- Posted by Admin on May 13, 2009
Sometimes, we may need to act on some information(object) which is critical for the application and we need to make sure that the information contained by that object is consistent. The way to keep the information in the object consistent is to avoid the access of that object by more than one thread or program. In short, we need to achieve mutual exclusion for that object for predefined number of statements or block of code. C# offers this by several ways such as lock, mutex and semaphores. lock statement is the easiest way to lock the object and the related statements.
The basic syntax is below.
Object thisLock = new Object();
lock (thisLock)
{
// Critical code section
}
Suppose you act upon one DataTable object and you do not want to alter the content of it by more than one threads then option available is to lock that datatable object.
DataTable dt = DatabaseOperations.GetDataTable(SQL);
lock(dt)
{
// critical statements to alter the contents inside dt
}
In short, lock enables us to achieve the mutually exclusive access to the locked object such that, when it is locked, no other thread can access that locked object until its lock is released. The thread that attempts to gain the access of the locked object gets to the SUPENDED state until the lock is removed.
Examples
lock(this) - locks the current instance of the object in which the statemens are being executed.
lock(typeof(ClassName)) - locks the static members of the class ClassName
- Posted by Admin on April 9, 2009
To create a PDF file from any .net application is very easy. You just need to use itextsharp component. You can download this component http://itextsharp.sourceforge.net
Just import this component namespace to your application. Here is the sample code.
Dim doc as New Document
PdfWriter.GetInstance(doc,New FileStream("Sample.pdf",FileMode.Create))
doc.Open()
doc.Add(New Paragraph(" Add the contects",FontFactory.GetFont(FontFactory.TIMES ROMAN,22,iTextSharp.text.Font.BOLD)))
doc.close()