473,776 Members | 1,517 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Help! Retrieve Results from Asynchronous Executions

r1
I am relatively inexperienced in using delegates and asynchronous
methods. I read several articles, and then I developed my own code
with a mission to improve the performance. Wow! I cannot believe the
difference in speed! However, the asynch operation fails sometimes,
despite of the fact that it works most of the time. I am really at a
loss how to fix this sporadic and erratic behavior.

This is a web application developed with Visual Studio 2003 (.NET
framework 1.1). The following C# code snippet shows that I use two
delegates to provide a built-in way to call two mainframe DB2 stored
procedures, SPX and SPY. I need to execute SPX and SPY many times,
each time passing different parameters as per signature of the method.
This code is in the server-side Business Logic layer (behind an ASP.NET
page to service a client request of a long running report).

With those asynch methods shown in the example, the code compiles and
runs incredibly fast when compared to the old-fashioned way of making
one call at a time. I was very happy with the performance and the
results from the asynch executions were correct.

However, I came across a really peculiar and sporadic error from
mscorlib.dll with an error message "object reference not set to an
instance of an object". This error is totally incomprehensibl e to
me. Here are the symptoms: (1) It seems to me the error only occurred
sporadically or randomly (because the application runs fine most of the
time). (2) Whenever the error occurred, the call stack pointed to one
of the many EndInvoke statements (not necessarily a particular
EndInvoke statement, but randomly one of the many EndInvoke
statements).

I apologize for putting down so much writing and code snippet. I
sincerely hope someone can shed some light on this mysterious error.
Any help or suggestion is greatly appreciated!

Code Snippet:

public delegate string SPXCaller(int Division);
public delegate string[] SPYCaller(int TimePeriod, int CategoryType,
int Division);

public class AsyncMethods
{
public AsyncMethods()
{
}

public string ExecSPX(int Division)
{
//This method contains code to exec DB2 stored procedure SPX
//SPX returns 1 output parameter as string
}
public string[] ExecSPY(int TimePeriod, int CategoryType, int
Division)
{
//This method contains code to exec DB2 stored procedure SPY
//SPY returns 5 output parameters as string[5]
}
}

public class BusinessData
{
public DataSet GetData()
{
//Declares a new DataSet to hold all data
DataSet dsData = new DataSet();

//Initiate the Asynchronous calls to exec SPX
AsyncMethods Task1 = new AsyncMethods();
SPXCaller Task1Caller = new SPXCaller(Task1 .ExecSPX);
IAsyncResult Result1 = Task1Caller.Beg inInvoke(8,null ,null);

AsyncMethods Task2 = new AsyncMethods();
SPXCaller Task2Caller = new SPXCaller(Task2 .ExecSPX);
IAsyncResult Result2 = Task2Caller.Beg inInvoke(10,nul l,null);

//Initiate the Asynchronous calls to exec SPY
AsyncMethods Task11T = new AsyncMethods();
SPYCaller Task11TCaller = new SPYCaller(Task1 1T.ExecSPY);
IAsyncResult Result11T = Task11TCaller.B eginInvoke(1,1, 8,null,null);

AsyncMethods Task12T = new AsyncMethods();
SPYCaller Task12TCaller = new SPYCaller(Task1 2T.ExecSPY);
IAsyncResult Result12T = Task12TCaller.B eginInvoke(1,2, 8,null,null);

AsyncMethods Task11M = new AsyncMethods();
SPYCaller Task11MCaller = new SPYCaller(Task1 1M.ExecSPY);
IAsyncResult Result11M =
Task11MCaller.B eginInvoke(1,1, 10,null,null);

AsyncMethods Task12M = new AsyncMethods();
SPYCaller Task12MCaller = new SPYCaller(Task1 2M.ExecSPY);
IAsyncResult Result12M =
Task12MCaller.B eginInvoke(1,2, 10,null,null);

AsyncMethods Task21T = new AsyncMethods();
SPYCaller Task21TCaller = new SPYCaller(Task2 1T.ExecSPY);
IAsyncResult Result21T = Task21TCaller.B eginInvoke(2,1, 8,null,null);

AsyncMethods Task22T = new AsyncMethods();
SPYCaller Task22TCaller = new SPYCaller(Task2 2T.ExecSPY);
IAsyncResult Result22T = Task22TCaller.B eginInvoke(2,2, 8,null,null);

AsyncMethods Task23T = new AsyncMethods();
SPYCaller Task23TCaller = new SPYCaller(Task2 3T.ExecSPY);
IAsyncResult Result23T = Task23TCaller.B eginInvoke(2,3, 8,null,null);

AsyncMethods Task21M = new AsyncMethods();
SPYCaller Task21MCaller = new SPYCaller(Task2 1M.ExecSPY);
IAsyncResult Result21M =
Task21MCaller.B eginInvoke(2,1, 10,null,null);

AsyncMethods Task22M = new AsyncMethods();
SPYCaller Task22MCaller = new SPYCaller(Task2 2M.ExecSPY);
IAsyncResult Result22M =
Task22MCaller.B eginInvoke(2,2, 10,null,null);

AsyncMethods Task23M = new AsyncMethods();
SPYCaller Task23MCaller = new SPYCaller(Task2 3M.ExecSPY);
IAsyncResult Result23M =
Task23MCaller.B eginInvoke(2,3, 10,null,null);

//All calls to BeginInvoke return right away.
//We can immediately move on to do another task.
//The following independent, long running task retrieves PO data
//while waiting for all asynch executions (DB2 store proc) to
finish.
DataTable dtPOData = GetPOData();

//Now, retrieve the return values by calling the EndInvoke method.
//Retrieve results from SPXCaller
string Ret1 = Task1Caller.End Invoke(Result1) ;
string Ret2 = Task2Caller.End Invoke(Result2) ;

//Retrieve results from SPYCaller
string[] Ret11T = Task11TCaller.E ndInvoke(Result 11T);
string[] Ret12T = Task12TCaller.E ndInvoke(Result 12T);
string[] Ret11M = Task11MCaller.E ndInvoke(Result 11M);
string[] Ret12M = Task12MCaller.E ndInvoke(Result 12M);

string[] Ret21T = Task21TCaller.E ndInvoke(Result 21T);
string[] Ret22T = Task22TCaller.E ndInvoke(Result 22T);
string[] Ret23T = Task23TCaller.E ndInvoke(Result 23T);
string[] Ret21M = Task21MCaller.E ndInvoke(Result 21M);
string[] Ret22M = Task22MCaller.E ndInvoke(Result 22M);
string[] Ret23M = Task23MCaller.E ndInvoke(Result 23M);

//Some source code omitted here. The code packs all results
//into a dataset dsData with multiple datatables.
return dsData;
}
}

Mar 29 '06 #1
0 1276

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

21
6556
by: Dave | last post by:
After following Microsofts admonition to reformat my system before doing a final compilation of my app I got many warnings/errors upon compiling an rtf file created in word. I used the Help Workshop program: hcw.exe that's included with Visual Basic. This exact same file compiled perfectly with no notes, warnings or errors prior to reformatting my system. Prior to the reformatting, I copied the help.rtf file onto a CD and checked the box to...
9
4413
by: Tom | last post by:
A question for gui application programmers. . . I 've got some GUI programs, written in Python/wxPython, and I've got a help button and a help menu item. Also, I've got a compiled file made with the microsoft HTML workshop utility, lets call it c:\path\help.chm. My question is how do you launch it from the GUI? What logic do I put behind the "help" button, in other words. I thought it would be os.spawnv(os.P_DETACH,...
4
3355
by: Sarir Khamsi | last post by:
Is there a way to get help the way you get it from the Python interpreter (eg, 'help(dir)' gives help on the 'dir' command) in the module cmd.Cmd? I know how to add commands and help text to cmd.Cmd but I would also like to get the man-page-like help for classes and functions. Does anyone know how to do that? Thanks. Sarir
6
4351
by: wukexin | last post by:
Help me, good men. I find mang books that introduce bit "mang header files",they talk too bit,in fact it is my too fool, I don't learn it, I have do a test program, but I have no correct doing result in any way. Who can help me, I thank you very very much. list.cpp(main program) //-------------------------------------------------------------------------- - #pragma hdrstop #pragma argsused
3
3363
by: Colin J. Williams | last post by:
Python advertises some basic service: C:\Python24>python Python 2.4.1 (#65, Mar 30 2005, 09:13:57) on win32 Type "help", "copyright", "credits" or "license" for more information. >>> With numarray, help gives unhelpful responses:
7
5387
by: Corepaul | last post by:
Missing Help Files When I enter "recordset" as the keyword and search the Visual Basic Help index, I get many topics of interest in the resulting list. But there isn't any information available from clicking on many of the available topics (mostly methods but some properties are also unavailable). This same problem occurs with many, if not most, keywords. Is there any way I can activate these "missing" help topics? HELP!
8
3235
by: Mark | last post by:
I have loaded Visual Studio .net on my home computer and my laptop, but my home computer has an abbreviated help screen not 2% of the help on my laptop. All the settings look the same on both including search the internet for help, but the help is worthless. Any ideas?
10
3366
by: JonathanOrlev | last post by:
Hello everybody, I wrote this comment in another message of mine, but decided to post it again as a standalone message. I think that Microsoft's Office 2003 help system is horrible, probably the worst I ever seen. I almost cannot find anything I need, including things I
1
6138
by: trunxnirvana007 | last post by:
'UPGRADE_WARNING: Array has a new behavior. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="9B7D5ADD-D8FE-4819-A36C-6DEDAF088CC7"' 'UPGRADE_WARNING: Couldn't resolve default property of object Label. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' Label = New Object(){Box1, Box2, Box3, Box4, Box5, Box6, Box7, Box8, Box9, Box10, Box11,...
0
2889
by: hitencontractor | last post by:
I am working on .NET Version 2003 making an SDI application that calls MS Excel 2003. I added a menu item called "MyApp Help" in the end of the menu bar to show Help-> About. The application calls MS Excel, so the scenario is that I am supposed to see the Excel Menu bar, FILE EDIT VIEW INSERT ... HELP. I am able to see the menu bar, but in case of Help, I see the Help of Excel and help of my application, both as a submenu of help. ...
0
9627
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9462
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10119
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10060
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9922
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8951
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7469
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
1
4030
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
2859
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.