.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Win Surprise Gifts!!!

Top 5 Contributors of the Month
Gaurav Pal
Post New Web Links

.NET Delegates: Making Asynchronous Method Calls in the .NET Environment

Posted By:      Posted Date: August 21, 2010    Points: 0   Category :ASP.Net

One of the many great features of the .NET Framework is that it has asynchronous infrastructure built in. In .NET you can call any method asynchronously by defining a delegate for the method and calling the delegate's asynchronous methods. This is beneficial to your application because when a synchronous call is made, the calling thread is blocked until the method completes whereas an asynchronous call is made on a different thread, and this allows the original thread to continue its work while the asynchronous call is in progress.This article explains delegates in .NET and how to use them to perform asynchronous calls, eliminating age-old threading problems.

Richard Grimes

MSDN Magazine August 2001

View Complete Post

More Related Resource Links

Windows 2000: Asynchronous Method Calls Eliminate the Wait for COM Clients and Servers


Windows 2000 is the first version of COM to support asynchronous method calls, which permit clients to make nonblocking calls to COM objects and objects to process incoming calls without blocking the calling threads. COM clients benefit from asynchronous method calls because they can continue working while waiting for outbound calls to return. Objects benefit because they can queue incoming calls and service them from a thread pool. Our SieveClient and SieveServer sample apps demonstrate how to create and use asynchronous clients and servers in COM-based distributed applications.

Jeff Prosise

MSDN Magazine April 2000

Making asynchronous calls to web services during ASP.NET page processing

Some ASP.NET web applications use web services to get some data that they display to users. Some pages may lay hardly on web services and these pages need some optimization to work better. In this posting I will show you how to use web services behind your ASP.NET page asynchronously and perform a lot of queries to web services. Sample code included! Eneta.Examples.WebAppThreading.zip VS2008 solution | 60KB Asynchronous page processing As an introduction let's see how ASP.NET supports asynchronous calls behind pages. Although we can use our own threading mechanism and avoid what is offered by ASP.NET it is more safe and time saving to use ASP.NET own infrastructure. The image on right that I stole from MSDN article Asynchronous Pages in ASP.NET 2.0 shows you how synchronous and asynchronous pages are processed by ASP.NET. I recommend to read this MSDN article because you can find also other methods for asynchronous calls. I will introduce you how to use PageAsyncTask based calls. If you look at diagram on right you can see that asynchronous processing of registered tasks happens between PreRender and PreRenderComplete events in separate threads. If we have data bound controls on our page we have to move data binding to PreRenderComplete event because this is the closest phase of page processing where asynchronous calls are finished.

How can I maintain "state" across WCF method calls?

I need to retrieve very large portions of NTFS files (as byte arrays) from a WCF Service.  The needed portions of the files are far too large to efficiently return in a single request, so I need a "chunky" implementation that will return just a portion of the file on each method call. But the entire process needs to be very fast... specifically: I need to avoid the overhead of re-opening the file each time the client requests the next "chunk". So how can I keep the filestream open on the service-side in anticipation of the next request from the client for the next chunk? And if no subsequent request arrives, then close the filestream? That is, implement "lazy close". Or stated another way: Does the code instantiated on the service-side to service an incoming method call remain "alive" after the method returns to the caller?  Or can it be configured that way, like a Singleton SAO behaves in Remoting?? Thanks, DT 

Making and receiving calls using e Diva Component API

Programs and scripts can use the Component API in either 'blocking' or 'non-blocking' mode. The following examples use 'blocking' mode because this is the simplest. For more complex scripts and applications 'non-blocking' mode can make it easier to create programs that can cope with unforeseen sequences of events or errors.
See the section 'Handling multiple calls' for more information.

We can create the DivaCall object directly here because we are handling only one call; if we were creating more than one DivaCall object then we would have to use DivaSystem and DivaInstance and the DivaCall objects would be created using the CreateCall method of DivaInstance.

To make a call
The following code makes a call with Connect , plays the wave file with SendVoiceFile when the call is answered and Disconnects.

AjaxToolkit's CascadingDropDown control is throwing Method Error 404 in Hybrid system environment (

Hi Experts, We have an Asp.net web application, which is deployed in shared hosting environment. On shared hosting environment initial request to this web application is handled by Linux server and then based on the requested page the Linux server is redirecting request to web server on windows OS. Now, in our web application, we have used ajaxToolkit's CascadingDropDown control to populate three levels of categories. In the hybrid system described above, the CascadingDropDown control is throwing Method Error 404. I would appreciate if some body can guide on how to resolve this issue. The sample of code snap shot is mentioned below. ********************************************************************* Aspx file. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <asp:DropDownList ID="ddlMajorLevelCategory" runat="server" Width="250px" ToolTip="Select Major Level Category" TabIndex="1"                            SkinID="h6BlueArial"> </asp:DropDownList>   <ajaxToolkit:CascadingDropDown ID="ccMajorCategory" runat="server" TargetControlID="ddlMajorLevelCategory" Category="M" PromptText=&qu

Problem canceling asynchronous method



I want to canceling an asynchronous method.

How can me it?


public IAsyncResult BeginGetAllUsersCount(object sender, EventArgs args, AsyncCallback callback, object state)
       //Canceling asynchronous operation
     return AdapterUser.BeginGetAllUsersCount(callback);

   public void EndGetAllUsersCount(IAsyncResult asyncResult)
     _totalRowsCount = AdapterUser.EndGetAllUsersCount(asyncResult);




Asynchronous Web Services, jQuery or .NET (BeginInvoke) Calls?



I have been moving my application to be more AJAX-based.  Currently I have a web service call where I use jQuery to gather some textbox (string) and checkbox (boolean) results and pass it to a web service.  Everything works really well, the response time is super quick.  The only downside that I can see to this is

1) you need to use jQuery, which will add to the user's download time - this doesn't really affect my application too much because I am using jQuery throughout the site

2) users can see the code and potentially try to hack the web service because they know where it is

I am most concerned with #2.  I've been reading a lot about .NET web service calls, using IAsyncResult, http://msdn.microsoft.com/en-us/library/2e08f6yc.aspx, and I am beginning to understand the 4 methods available in this article.  However, is there extra bloat using this way compared to the jQuery web service call?

If there isn't that much bloat or lag time using this method, I'd like to convert my application.  Which one of these 4 methods is best in a scenario where I am just returning a small string value?  The 4 methods in the article are

  • to wait for EndInvoke itself, which from what I read is not recom

How Do I maintain the chronological order in which Asynchronous delegate calls are made?


I have created a basic logging framework for my application that writes log messages to a local text file using an Asynchronous delegate.

My application has many threads running however, and as a result, the order of the log entries in the text file is not chronological.

So I have two competing requirements: on one hand, my WriteToLog() method has to return almost immediately so that it doesn't block in-flight code, while at the same time the log file has to be in chronological order.

Any ideas?  Some of the problems I've encountered are:

1a.  Trying to use a Queue (with a lock{ } around it) to maintain the order seems to result in deadlocks

1b.  Even if I use a Queue, at some point the Queue must be written to disk, so it seems like I'd have to frequently have WriteToLog spin off a "WriteToDisk" like method.

2a.  I've considered instantiating a new thread which polls the Queue from (1a) and writes to disk in a loop, say, every 5 seconds.  I'm leaning more towards this method.

3.  I've looked into log4net and some other stuff but it just seems like overkill, and I'd really like to have my own framework for this seemingly simple task.



Making Claims based authentication work with multi-tenant environment in SP 2010


Does anybody know of a guide or reference for setting up hosting in a multi tenant where authentication happens in claims based mode?


We have a setup where our clients are hosted on a single web application under different site collections. And we use forms authentication where user of a particular site collection gets authentication using the respective database. We now want to use claims based authentication and out-of-the-box multi-tenancy of SP 2010. We can setup site collections and site groups, but how do we implement claims based authentication in an env like this?

Method calls from try/catch


Hi All,

Was wondering ... if I have a method call from within a try/catch and the method (with no internal error handling) throws a runtime error, will the error get caught in the catch block of the try/catch that called the method in the first place?

Executing a callback method when the asynchronous operation returns


Hi, I really don't understand the physical meaning of "callback" in the real world although a lot of code there. Can somebody give me a real world example to explain it?(not code itself)?

Thank you very much.

ScriptManager does not execute all script blocks registered when making multiple asynchronous HTTP r


I have found a bug in the ScriptManager.  I am executing Javascript in multiple Update Panels.  I have EnablePartialRendering mode set to true and and the UpdatePanels have update mode set to conditional.

Each UpdatePanel is in a ascx control, and these controls are added to he page programtically using Page.LoadControl().

When the client performs some UI actions in the browser, I am calling __doPostBack().  Each .ascx control will register client script block to be executed in it's UpdatePanel using ScriptManager.RegisterClientScriptBlock(), and each .ascx control uses a unique key when registering the script block.

Everything works as advertised when there is only one _doPostBack() being called at a time, (one HTTP Request).  The problem only occurs when __doPostBack is called before the previous __doPostBack causes the JavaScript registered in the ScriptManager is executed.  When there are multiple, simultaneous, asyncrhonous HTTP Requests to the same page with the same session, only the most recent JavaScript is executed that was registered with ScriptManager.RegisterClientScriptBlock().

I have tested this with both .NET 2.0 and .NET 3.5.  I can produce a VS 2008 solution that demonstrates this problem.  The only way for me to resolve this issue is to prevent multiple calls to __doPostBac

Thinking about new C# method prototypes: object as dictionary

I recently had to write a small Flickr API. I know many .Net API for Flickr already exist but I needed one for a Silverlight application. Whatever, it's only about building some querystrings so I did it by myself. It's been an opportunity to think again about a classical question: how to pass parameters to a method ?

Imagine you have a generic method to call some Flickr functions.

jQuery $(document).ready() and ASP.NET Ajax asynchronous postback

Many call it the ASP.NET jQuery postback problem, but using the technique below should make it no problem anymore. $(document).ready() isn't called after an asynchronous postback. What this means? You lose the functionality that should be executed within $(document).ready() after an UpdatePanel rendered its contents after an asynchronous postback.

Making Ajax Callbacks to the Server Using jQuery with ASP.NET

In the first part of this article series I introduced jQuery's functionality and how it provides a rich client side programming model. This time around I'll expand on these concepts and show you how you can use jQuery in combination with ASP.NET using it as an AJAX backend to retrieve data. I'll also discuss how you can create ASP.NET controls and otherwise interact with jQuery content from ASP.NET pages in WebForms.

jQuery is just a JavaScript library so it will work seamlessly with ASP.NET both from page code as well as through backend driven code using the Page.ClientScript object or ScriptManager. You can use jQuery on its own as a client side and Ajax library that communicates with ASP.NET or you can use jQuery in combination with ASP.NET AJAX. The two actually complement each other quite well as jQuery provides functionality that the ASP.NET AJAX library does not and vice versa. For the most part the interaction between the two libraries is trouble free except for a few very rare edge cases.

jQuery live() and ASP.NET Ajax asynchronous postback

The issue is that normally $(document).ready() is called when the DOM is ready to be manipulated. But this doens't happen after an ASP.NET Ajax asynch postback occurs.

This means that the initial jQuery bindings won't be automatically available after the asynchronous postback is over. I underline "automatically" here because my last post describes more possibilities, how this issue can be worked around.
ASP.NetWindows Application  .NET Framework  C#  VB.Net  ADO.Net  
Sql Server  SharePoint  Silverlight  Others  All   

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend