Async Methods in .NET

Yesterday I had to rewrite some C# code at work. We were trying to send a message to a webserver without waiting for a response, but for some reason it would hang after only sending a couple messages. I ended up rewriting it to use asynchronous sockets instead of the WebRequest class.

After I had it working, I realized that while the Begin/End pattern that .NET uses for asynchronous operations is better than not having any asychronous ability at all, it would be even better if it had some kind of syntactic support for this, instead of using callback methods.

Here's the code I ended up writing, using callbacks:

    public void log (LogEntry entry) {
        string logString = logEntryToString(entry);
        try {
            Socket s = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp);
            IPAddress ipAddr = Dns.Resolve(m_host).AddressList[0];
            s.BeginConnect(new IPEndPoint(ipAddr, m_port),
                new AsyncCallback(this.finishAsyncLog),
                new Pair(s, logString));
        }
        catch (Exception e) {
            throw new LogException("Problem connecting to log server: "+
                e.Message + " (Log entry: " + logString + ")");
        }
    }

    private void finishAsyncLog(IAsyncResult result) {
        Pair state = (Pair)result.AsyncState;
        Socket s = (Socket)state.First;
        string logString = (string)state.Second;

        try {
            s.EndConnect(result);

            string encodedString = "/log?pairs=" +
                System.Web.HttpUtility.UrlEncode(logString,
                new UTF8Encoding(false));

            string httpRequest = "GET /log?" + logString + "\r\n\r\n";
            Byte[] ByteGet = Encoding.ASCII.GetBytes(httpRequest);
            s.Send(ByteGet, ByteGet.Length, SocketFlags.None);

            s.Close();
        }
        catch (Exception e) {
            Console.WriteLine("Problem connecting to log server: "+
                e.Message + " (Log entry: " + logString + ")");
        }
    }

Notice how I had to break the log() method into two pieces -- one to start the asynchronous operation, and one to finish it. I also had to bundle up a couple local variables into a Pair object, so that I could pass both of them to the callback method (which only takes one state object). If C# and .NET had been designed with some kind of fork or coroutine or continuation facility, the code might have looked more like this:

    public void log (LogEntry entry) {
        string logString = logEntryToString(entry);
        try {
            Socket s = new Socket(AddressFamily.InterNetwork,
                SocketType.Stream, ProtocolType.Tcp);
            IPAddress ipAddr = Dns.Resolve(m_host).AddressList[0];
            IPEndPoint ep = new IPEndPoint(ipAddr, m_port);
            callAsync(s.Connect(ep)) {
                string encodedString = "/log?pairs=" +
                    System.Web.HttpUtility.UrlEncode(logString,
                    new UTF8Encoding(false));
                string httpRequest = "GET " + encodedString + "\r\n\r\n";
                Byte[] ByteGet = Encoding.ASCII.GetBytes(httpRequest);
                s.Send(ByteGet, ByteGet.Length, SocketFlags.None);

                s.Close();
            }
        }
        catch (Exception e) {
            throw new LogException("Problem connecting to log server: "+
                e.Message + " (Log entry: " + logString + ")");
        }
    }

This would be much cleaner -- it's only one method instead of two and I don't have to do any games to package up my local variables. But it does have the drawback of not making it clear that after the socket is connected, the code will be running in a different thread than it started in. It's also not clear whether the catch should apply to the asynchronous code or not. So I suppose it was the right decision for the designers of .NET to use callbacks, but it's still unfortunate that we couldn't have had a more sophisticated solution.

Posted on August 28, 2003 10:50 AM
More languages articles

Comments

Seems like a situation where you'd could use anonymous local functions (lexical closures?)

I don't know about C#, but on a couple of occasions I have ended up using local classes or functor objects in C++ to the same effect.

// Pseudo-C++ code
void  MyClass::log(LogEntry entry)
{
    // Local class for the async operation
    struct CallAsync
    {
        CallAsync(Socket s, string logString)
            : m_s(s), m_logString(logString)
        {
        }
        //
        // Overloaded function operator that Socket.AsyncConnect can call directly
        //
        void operator()()
        {
            string encodedString = "/log?pairs="  + encode(m_logString);
            string httpRequest = "GET  "  +  encodedString  +  "\r\n\r\n"; 
            m_s.Send(httpRequest,  httpRequest.getLength, SocketFlags.None);  
            m_s.Close(); 
        }
    };
    try
    { 
        Socket  s  =  new  Socket(...); 
        IPAddress ipAddr  =  Dns.Resolve(m_host).AddressList[0]; 
        IPEndPoint ep = new IPEndPoint(ipAddr, m_port); 
        //
        // Create functor        
        //
        CallAsync callAsync(s, logString);
        s.AsyncConnect(ep, callAsync);
        //
        // Or simply:
        // 
        //   s.AsyncConnect(CallAsync(s, logString));
        //
    } 
    catch(...) 
    { 
        ...
    } 
}


You can have all your related code together this way, and you don't have to resort to using a Pair to package parameters, but it is still cumbersome. As you mentioned, the scope of the exception handler is a problem though. Maybe CallAsync could have its own exception handler...

There's also the extra work of creating a whole class, writing a constructor and so on. It gets worse if all you want to do is encapsulate a simple inline expression -- don't you wish you could do the following in C...!

    int items[100];    
    qsort(items, 100, compare(a, b) { a - b } );

-K

Posted by: Kaushik at August 28, 2003 03:19 PM

You're right, closures are completely sufficient to get what I want here. I should have realized that. So I guess I'm just complaining that C# requires this clunky delegate syntax instead of having lexical closures.

Posted by: kim at August 28, 2003 03:29 PM

But without continuations, the exception ambiguity remains even with closures. Or am I missing something?

Posted by: Bill Glover at August 28, 2003 04:50 PM

Continuations would resolve the exception ambiguity, but at the cost of making the code return to its caller multiple times. Which in this case is definitely not something I want to happen. I guess I could put a Thread.exit() at the end of the handler though.

Posted by: kim at August 28, 2003 05:29 PM

Closures will be in the next version of C#. They will also include a special Iterator construct which are similar to coroutines.

http://www.gotdotnet.com/team/csharp/learn/Future/VCS%20Language%20Changes.aspx

Posted by: Björn Morén at October 12, 2003 01:56 PM

Why did you even bother posting an article that doesn't fully describe the objects utilized??????????????????????????????????????????????????????????????????????????

Posted by: Joe at March 27, 2007 05:52 PM

ou can have all your related code together this way, and you don't have to resort to using a Pair to package parameters, but it is still cumbersome. As you mentioned, the scope of the exception handler is a problem though. Maybe CallAsync could have its own exception handler...

Posted by: games at October 12, 2009 05:16 AM

ou can have all your related code together this way, and you don't have to resort to using a Pair to package parameters, but it is still cumbersome. As you mentioned, the scope of the exception handler is a problem though. Maybe CallAsync could have its own exception handler...

Posted by: games at October 12, 2009 05:17 AM

We will surprise to find the high quality tiffany jewelry in much.
Everyone will focus on tiffany and co,
tiffany jewelry.
Choose, buy and shop for on sale tiffany jewelry including Tiffany & Co Silver Necklace, Pendants, Bangles, Bracelets, Earrings, Rings and Accessories.
Provide high quality silver Tiffany jewellery including necklaces,rings and other style jewelry at wholesale prices.Pick your dreamingtiffany co jewelry.
Tiffany Necklaces
Tiffany Rings
tiffany co jewelry

Posted by: boyy at October 12, 2009 05:19 AM

Great post mate, keep it up.

Posted by: free online games at October 25, 2009 04:10 PM

These Women's Classsic Tall 5815 Boots in pink flower print can either be worn at their normal height if you want Ugg boots, but in order for you to create a more casual look to what you are wearing they can be pushed down Women's UGG Classic Tall 5815 Boots in Baked Clay

Posted by: ugg boots on sale at October 27, 2009 02:25 PM







Posted by: tiffany jewelry at October 28, 2009 04:58 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: tiffany jewelry at October 29, 2009 08:07 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: tiffany jewelry at October 29, 2009 08:07 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: tiffany jewelry at October 29, 2009 08:07 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: tiffany jewelry at October 29, 2009 08:08 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: tiffany jewelry at October 29, 2009 08:08 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: tiffany jewelry at October 29, 2009 08:08 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:08 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:09 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:09 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:09 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:09 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:09 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:10 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:10 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:10 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 08:10 AM

Love this man. Great stuff, great prices, free shipping. Email him if you cant find what you are looking for and he will look for you. Good customer service.louis vuittonSomeone who is knowledgeable in louis vuitton.Another guy from hong Kong (Largest louis vuitton second hand city, I believe) he has great stuff at fair prices but his shipping is insane

Posted by: louis vuitton at October 29, 2009 10:43 AM

Eliminating the need for the extra trouble to wear ugg boots uk
ugg boots saleuggs, in the extreme sports, look for happiness in life, with UGG Classic boots and nike sb showed off your tall body, do not worry about being laughed at, dancing new style ugg australia and nike sb dunk . The flavor of life that is colorful, there are Christian Louboutincheap nike dunksUGG cardy boots、and nike sb for sale also used fear to creep away money from your pocket Mody ? Love beauty, you might even love UGG Classic tall bootsUGG Nightfall bootsUGG Classic short bootsnew nike sb。There are an infinite high power drivers of popular front ugg boots saleugg saleuggsnike dunkdiscount ugg bootsnike dunk sb, our website also have UGG Nightfall bootsbutton ugg bootsbailey button uggugg button bootsbailey button bootsnike dunk midnike dunk highChristian Louboutin Boots, pick your favorite, do not hesitate!

Posted by: ugg boots sale at November 12, 2009 03:44 AM

Good day! Thx for your great post and Im thinking about how to introduce my ugg boots to you cos Im not sure if u like this. Many people who live in the cold area like the ugg boots, especially the north-europe. Our uggshare.co.uk supply the cheapest classic cardy ugg boots, class tall ugg boots, classic short ugg boots and other series of uggs, hope my words didn’t trouble u, cy!

Posted by: ugg boots at November 15, 2009 09:16 PM

Uggs on sale now.UGG Classic Cardy Boot makes me different form the other

girls. The UGG Bailey Button Boot is a good choice for female.

Posted by: ugg classic cardy boots at November 17, 2009 12:08 AM

Louis Vuitton , commonly referred to as Louis Vuitton Patch Bag and Louis Vuitton Bags, or sometimes shortened to Louis Vuitton Sale has become one of the most Louis Vuitton Speedy 35 Bag Agendas luxurybrands LV Wallet.

Posted by: 1 at November 17, 2009 01:34 AM

UGG Bailey Button bootsis a new style in 2009.The classic cardy uggs boots is another hot boots that worth of buying.And the classic tall ugg boots will make your winter amusing.And now uggs on sale,if you are looking for such a boot,the ugg boots is good choice this year.

Posted by: UGG Bailey Button Boots at November 17, 2009 01:39 AM

I love Women's UGG Classic Cardy Boot 5819 very much. And the new style UGG Mayfaire Boots is aslo a good choice this year.

Posted by: UGG Bailey Button Fancy Boots at November 17, 2009 03:29 AM

I was in search of a kind of shoe that hardly can be found in ordinary shop. Actually my wife feels uncomfortable wearing shoe. I promised her to give a nice one but I did not find it so easily at first. I  tried to find the exact shoe for her. And I finally find it ,that is ugg boots! What do you think? Did you find Uggs boots on sale with discount price and free shipping?

Posted by: uggs on sale at November 17, 2009 08:50 PM

www.enjoywholesale.com

china wholesale clothing,china wholesale shoes,china wholesale electronics,china wholesale suppliers,china manufacturers

china wholesale products,light in the box,wholesale lots,wholesale ipod
china direct,china dropship,china trade,made in china

electronics wholesaler,ebay wholesaler,financial wholesaler
fashion wholesaler,clothing wholesaler,wholesaler magazine

computer wholesaler,external wholesaler,dvd wholesaler,wholesaler definition,china wholesaler,mutual fund wholesaler,define wholesaler,insurance wholesaler


discount ugg boots
forture
ugg boots
Discount store

Posted by: wholesaler business website, net shopping site, external wholesaler,dvd wholesaler,wholesaler definition,china wholesaler,mutual fund wholesaler,define wholesaler,insurance wholesaler at November 18, 2009 03:04 AM

lxjuan08ed hardyis a famous ed hardy store which sell directly ed hardy clothing, shoes, boots, swim suit and other cheap ed hardy.

Browse through our catalogue of hundreds of ed hardy clothing,Ed hardy Shirt,Ed hardy ... Buy Ed Hardy today for a gift, for a friend, or for yourself.

Posted by: ed hardy at November 18, 2009 03:48 AM

Great

-c-99.html">ugg mayfaire boots

! a little small. My

fault not yours.

Posted by: aetrewte at November 19, 2009 08:36 PM

We are the best online sales for the china wholesale . Here you can have a large of choices of kinds Ugg Boots,Converse Shoes,Timberland Boots,puma shoes,Nike Shox Shoes ,Nike Dunk SB Shoes,Nike Air Max,Links Of London,Tiffany Jewelry,Dior Handbags?,jimmy choo handbags ,Cartier Watches, 8GB Mp4 Players,Bluetooth Car DVDs. All our cheap online cheap goods are high quality and original packages, and best service. We offer our customers the best service, 7 days arrive at your door.Enjoy your easy and happy shopping with us.

Posted by: cheap goods sale. at November 20, 2009 12:25 AM

Wedding and [url=http://www.bridal01.com//]bridesmaid dresses[/url] and shoes from Hell.

Everything you need to know about [url=http://www.bridal01.com//]om dresses[/url]. As always, the best place for full info on businesses,

Look more beautiful on your wedding day wearing gorgeous [url=http://www.bridal01.com//]Wedding dress[/url] that are unique and with lasting impression.

Posted by: cokefish at November 20, 2009 01:07 AM

ou won't overlook the designer when getting a handbag. With ereplicastock's beautiful louis vuitton handbags,Fendi handbags, Prada purses and other designer ladies hand bags, you can obtain to be a trendsetter.


louis vuitton launched his firm after gaining experience making luggage and trunks for Napoléon III. A century and a half later, his namesake brand is the anchor of the world's largest luxury-goods company.

Posted by: nerhm at November 20, 2009 02:00 AM

ou won't overlook the designer when getting a handbag. With ereplicastock's beautiful louis vuitton handbags,Fendi handbags, Prada purses and other designer ladies hand bags, you can obtain to be a trendsetter.


louis vuitton launched his firm after gaining experience making luggage and trunks for Napoléon III. A century and a half later, his namesake brand is the anchor of the world's largest luxury-goods company.

Posted by: nerhm at November 20, 2009 02:01 AM

ou won't overlook the designer when getting a handbag. With ereplicastock's beautiful louis vuitton handbags,Fendi handbags, Prada purses and other designer ladies hand bags, you can obtain to be a trendsetter.


louis vuitton launched his firm after gaining experience making luggage and trunks for Napoléon III. A century and a half later, his namesake brand is the anchor of the world's largest luxury-goods company.

Posted by: nerhm at November 20, 2009 02:01 AM

ou won't overlook the designer when getting a handbag. With ereplicastock's beautiful louis vuitton handbags,Fendi handbags, Prada purses and other designer ladies hand bags, you can obtain to be a trendsetter.


louis vuitton launched his firm after gaining experience making luggage and trunks for Napoléon III. A century and a half later, his namesake brand is the anchor of the world's largest luxury-goods company.

Posted by: nerhm at November 20, 2009 02:01 AM

ou won't overlook the designer when getting a handbag. With ereplicastock's beautiful louis vuitton handbags,Fendi handbags, Prada purses and other designer ladies hand bags, you can obtain to be a trendsetter.


louis vuitton launched his firm after gaining experience making luggage and trunks for Napoléon III. A century and a half later, his namesake brand is the anchor of the world's largest luxury-goods company.

Posted by: nerhm at November 20, 2009 02:01 AM

We provide a variety of Wedding dress gowns according to the measurements your supplied.

A view of the world's longest wedding dresses train made by Zhao Peng to please his ·

Dennis wholesale wedding dress factory would like to thank you for visiting our site and welcome wholesale wedding gowns from us.

Posted by: cokefish at November 20, 2009 02:32 AM

Do you think I can stay timberland boots uk to become nothing to you ? Do you think I am a timberland boot automaton ? --a discount timberland boots machine without feelings ? and can bear classic timberland boots to have my morsel of bread snatched from my lips, and my drop of kids timberland boots living water dashed from my cup? Do you think, because I am timberland mens shoes poor, obscure, plain, and little, I am soulless and heartless? You think timberland 6 inch boots wrong!--I have as much timberland custom boots soul as you,--and full as much timberland roll top boots heart! And if God had timberland womens shoes gifted me with some beauty and much wealth, I should have made it as hard for you to leave me, as it is now for me to leave you. I am not talking to you now through the medium of timberland hiking boots custom, conventionalities, nor even of mortal flesh.

Posted by: ugg boots at November 22, 2009 11:12 AM

replica Rolex Masterpiece
replica Rolex Milgauss


Posted by: Rolex GMT watches at November 22, 2009 11:46 AM

Your article is write very well, I like it very much ~
ghd Hair Straightener
ghd Hair Straighteners
ghd straighteners
GHD
hair straighteners
bose in ear headphones
bose on ear headphones
bose headphones
nike sb dunks
nike dunks
I wish you have a wonderful day!Thank you.

Posted by: ghd straighteners at November 22, 2009 08:38 PM

Timeberland boots on sale now! Do you want moreTimeberland boots information?Just move your mouse and press it to our Timberland shoes online store.

Posted by: Timberland uk at November 23, 2009 01:31 AM

The street wear for the street smart speaks a lot about the fashion Christian Louboutin concepts of ed hardy men Line. The suave cuts and colors in the ed hardy t shirts Hoodies has become a popular flair among those who choose to mellow on their daily garb. The sneakers and ed hardy clothes are complemented by the ed hardy sale with its intricate vintage prints. The young professionals who choose not be held captives of edhardy
and casual look of collars and slacks opt for ed hardy t shirt , shirts and hoodies for that relaxed and casual feel. ed hardy outlet is the normal look preferred by the hippies, artists and yuppies alike.

Posted by: ed hardy at November 23, 2009 02:24 AM

Laptop Battery Laptop Battery Laptop Batteries
Laptop Batteries discount laptop battery
discount laptop battery
notebook battery notebook battery
computer battery computer battery
replacement laptop battery replacement laptop battery
notebook batteries notebook batteries

Posted by: Laptop Battery at November 24, 2009 09:58 PM

Ugg Classic Cardy

Boots

Ugg Classic Tall

Boots

Ugg Classic Short

Boots

Posted by: topuggshoes at November 26, 2009 03:23 AM

chaoying nfl jerseys
Giants Jerseys
Patriots Jerseys

Posted by: jerseysleague at November 29, 2009 04:20 AM

Paul Smith has been collaborating with a few different organizations recently and his latest venture sees him teaming up with Japanese bicycle saddle, Paul Smith bag, on a limited edition leather saddle. The release features Smith’s signature stripes where only 20 will be available at Paul Smith Clothing store in Japan and 8 at the Floral Street store in London. Get on it quick

Posted by: fsafw at November 29, 2009 11:40 AM

Just wanted to say great job with the blog, today is my first visit here and I’ve enjoyed reading your posts so far
ugg bailey button
Wow, my ugg classic mini will not be coming off now! I’ve had them on for 12hrs strait and I do not want to take them off. Thanks for everything, well worth the wait.

Posted by: ugg bailey button boots at November 30, 2009 06:07 AM

Thanks for sharing another post. Website Design Calgary

Posted by: ghis at November 30, 2009 06:59 PM

When a girl has Eugenie Wallet experience the poor day, she may have many kinds of imaginations. And the Louis Vuitton Eugenie Wallet desire of shopping may become stronger Louis Vuitton Eugenie Wallet Replica than the desire when she has gucci a good economical situation. Nowadays, it is very common for many young female graduates to go to matrimonial agency to find a good husband but not go to the talent
Neverfull MM

Posted by: fanqin at December 1, 2009 01:50 AM

Spring is near,every girl wants to be the bride in the special season.They are eager to put on beautiful Wedding Dresses or the Bridal gowns.During the day the Wedding gowns is the good choose,and the night,if you want radiant,you need the Evening gowns.
About the bridesmaid,they have to wear Bridesmaid Dresses in order to avoid grab limelight with the bride.And the Flower Girl has the Flower Girl Dresses,too.In the wedding,the Cocktail Dresses and the Evening Dresses is necessary,too!And remember,the Wedding Dress of the Bridal Dress must be the most glaring!

Posted by: weddingdressclub at December 1, 2009 01:58 AM

ugg boots sale at a time when large heat has set off a winter 08/09 to Ewha.Outlines the

warm wool winter fashion degree to wool crocheted wool ugg boots uk to join after the

body does not stimulate your skin soft, soft comfort UP. Fashion can not without
ugg boots presence in Winter.and ugg boots have many series.such as:
ugg classic
UGG Bailey Button boots
ugg nightfall
ugg kids

Posted by: uggboots at December 2, 2009 08:40 PM
Post a comment









Remember info?




Prove you're human. Type "human":