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

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

OutOfMemory Exception on 64 bit machines (Interop Problem)

Posted By:      Posted Date: September 09, 2010    Points: 0   Category :.NET Framework
Hello Our application needs to display the printer settings dialog. This works fine in 32bit windows systems, but results in a System.OutOfMemoryException at System.Runtime.InteropServices.Marshal.AllocHGlobal(IntPtr cb) when it is running under 64bit (Windows 2008 Server). The problem can easily be reproduced in a winform app. You need to set the platform target to x86 to experience the problem.Unfortuantely, our application needs to be built fox x86 for other reasons. Any ideas why this happens? Kind Regards Mat Source Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication8 {     public partial class Form1 : Form     {         [DllImport("kernel32.dll")]         static extern IntPtr GlobalLock(IntPtr hMem);         [DllImport("kernel32.dll")]         [return: MarshalAs(UnmanagedType.Bool)]         static extern bool GlobalUnlock(IntPtr hMem);         [DllImport("kernel32.dll")]   &n

View Complete Post

More Related Resource Links

Interop: Get Seamless .NET Exception Logging From COM Clients Without Modifying Your Code


Using .NET objects from ASP can help you gain experience with the .NET Framework before migrating to ASP.NET. Your ASP pages will make use of the new .NET components through COM-callable wrappers (CCW). But how will you handle exceptions? This article fills you in.

Matt Adamson

MSDN Magazine January 2005

64-bit ActiveX Interop Problem

Our sister company wrote an ActiveX component for interfacing to a device that they(we) sell.  I have developed a VS2008 C# interface to the OCX by placing their COM object on a windows form then communicating through the generated interop.  But this is not working when I try to run the application on Win7 64-bit.  When I try to create the form which in turn loads the OCX, I get the following error: COMException was caught.  Class not registered (Exception from HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) The problem is not that the component is not registered.  I can see that the OCX is properly registered in the registry.  If I run their application it works fine with the registered OCX. I am able to debug the OCX.  I can see the constructor called on a 32-bit OS.  But the constructor is never called on a 64-bit OS.  There appears to be something wrong inside of the AxInterop.  I also tried regenerating the AxInterop in the development system running on a 64-bit OS.  I deleted and readded the component from the form.  But this did not change the problem. I am now at a complete loss as to where to look next.

'System OutOfMemory Exception' while using rdlc in Windows application

hi Everyone , I am Using Reporting Service (.rdlc) in my Windows application , i am getting Error System OutOfMemory Exception Like "an error occured during local report processing An Unexpected error occured in Report Processing Exception of type 'System OutOfMemory Exception'Was Thrown " what to do Please anyone help me ... Advance Thanks Anilmarnal

PathGradientBrush throwing OutOfMemory exception

Hi, I don't know why I'm getting an OutOfMemoryException whil trying to create a PathGradientBrush. Here is my code:   Code Block GraphicsPath gp; PathGradientBrush pgb; Rectangle rec;   rec = new Rectangle(new Point(35, 35), new Size(60, 60));   Point[] pontos = new Point[6]; pontos[0] = new Point(rec.Left, rec.Bottom); pontos[1] = new Point(rec.Left, rec.Top - 2); pontos[2] = new Point(rec.Left + 2, rec.Top); pontos[3] = new Point(rec.Right - 2, rec.Top); pontos[4] = new Point(rec.Right, rec.Top + 2); pontos[5] = new Point(rec.Right, rec.Bottom);   byte[] pontosTipo = new byte[6]; pontosTipo[0] = (byte)PathPointType.Start; pontosTipo[1] = (byte)PathPointType.Line; pontosTipo[2] = (byte)PathPointType.Bezier; pontosTipo[3] = (byte)PathPointType.Line; pontosTipo[4] = (byte)PathPointType.Bezier; pontosTipo[5] = (byte)PathPointType.Line;   gp = new GraphicsPath(pontos, pontosTipo); pgb = new PathGradientBrush(gp); // OutOfMemoryException pgb.SurroundColors = new Color[] { Color.White, Color.Blue };     This code was running in the Paint event, and then I passed to the constructor. Still, the out of memory exception keeps throwing. I have no Idea why this is happening. It is an empty form. Any ideas on why this is happening?   Thanks for any help, Regards, Fábio

Problem : Need to make COM InterOp at runtime using reflections Passing Pointers as parameters?

Hello, I need to make COM IntetrOp at runtime using reflections. My native COM Object's exposed methods have some parameters as pointers (DWORD*) and some double pointers (DWORD**) and some are user defined types(e.g SomeUDTType objSmeUDTType) and vice versa its pointer(i.e. SomeUDTType *pSomeUDTType). Now for dynamic method invocation, we have single option for passing parameters as array of object i.e object[] and filling this array statically. But I need to pass pointers and references and pointers to pointers. For now how can I be able to populate object array as mixed data of simple data types, pointers or references and pointers to pointers. Working Example: Native COM exposed method : STDMETHODIMP MyCallableMethod(DWORD *value_1,BSTR *bstrName,WESContext a_wesContex Translated by tlbimp.exe (COMInterop) UDTINIDLLib.RuntimeCallingClass.MyCallableMethod(ref uint, ref string, UDTINIDLLib Now calling these methods at runtime using reflection at runtime, See here :        Assembly asembly = Assembly.LoadFrom("E:\\UDTInIDL\\Debug\\UDTINIDLLib.dll");         Type[] types = asembly.GetTypes();         Type type = null;    //foreach (Type oType in types)         {             try      &nb

Soap exception problem

Hello, I'm having a problem with the web service soap exception that im facing. In my if else statement, the web service keeps on throwing soap exception when name was not found. SoapException was caught A user with the account name test.name could not be found --> User Not Found: Could not load profile data from the database. My question is.. Is it possible to handle that in if else statement? Basically the web service returns profile data (ex. name, age, address, in xml format) What i want is if just like this.. If _result isnot nothing then _str = _result else 'do nothing end if Is that possible?    Ã‚®Â©T½¼

WCF - Java web service interop - Problem with asymmetric binding

Hi, I try to communicate with a Java web service and run into the following error: Error: System.ServiceModel.Security.MessageSecurityException: The incoming message was signed with a token which was different from what used to encrypt the body.  This was not expected. Server stack trace:    at System.ServiceModel.Security.TokenTracker.RecordToken(SecurityToken token)    at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlDictionaryReader reader, Int32 position, Byte[] decryptedBuffer, SecurityToken encryptionToken, String idInEncryptedForm, TimeSpan timeout)    at System.ServiceModel.Security.ReceiveSecurityHeader.ExecuteFullPass(XmlDictionaryReader reader)    at System.ServiceModel.Security.StrictModeSecurityHeaderElementInferenceEngine.ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader)    at System.ServiceModel.Security.ReceiveSecurityHeader.Process(TimeSpan timeout, ChannelBinding channelBinding, ExtendedProtectionPolicy extendedProtectionPolicy)    at System.ServiceModel.Security.MessageSecurityProtocol.ProcessSecurityHeader(ReceiveSecurityHeader securityHeader, Message& message, SecurityToken requiredSigningToken, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)    at System.ServiceModel.Security.AsymmetricSecurity

COM Interop exception in MSI package


I have migrated the VB code to VB.net and Kept the Interop dlls as it is. Withe that .Net code I have created the .msi Package and installed the application on my desktop. But when I tried to run the application it's throwing error as:

Error: An error occured in creating the form. See Exception.InnerException for details. The Error is: Could not load file or assembly 'AxInterop.ComctlLib, Version=, Culture=neutral, PublicKeyToken=null' or one of it's dependencies. The System cannot find the file specified.

Please help to run the application in a success way...




WCF: Problem throwing FaultException after touching Exception.Data collection



My client code receives a CommunicationException if my server code touches the Exception.Data collection.  If my server code avoids the Exception.Data collection, then my client code works (i.e. it receives my custom exception as expected). 


I have reduced this problem down to two simple examples (see below)..one that works (A), one that does not (B).  The only difference between the two examples is that in example B, the code looks at the Exception.Data.Count property.


Why would touching the Exception.Data collection cause my client code to receive the CommunicationException? 

Is there any way to avoid this?


Thank you in advance for an consideration you may give to this question. 


A: Working Example: Client Receives CustomException
  throw new CustomException("This is a custom exception.");
 catch (CustomException ex)
  throw new FaultException<CustomException>(ex, new FaultReason(ex.Message), new FaultCode("Receiver"));


B: Non-working Example: Clien

WPF textbox throwing OutOfMemory exception...



I am using a texbox in my appication to capture the log. But when I reach a certain point, it throws a system.outofmemory exception and crashes the app. How can I handle such a situation. I really need to show all the contents to the user as I cannot remove older contents. Is it possible that I save some of the older lines to a temp file? If yes, how do I do it and also at the end I should be able to hit a Save Button to Save all the contents to a text file at the specified location. So if I am transfering contents of the textbox to a temp file then how do I combine the whole log (from the temp file as well as the textbox) and save it to this new file? Also is it possible to remove the temp file everytime the OS is restarted?? 

Any help will be greatly appreciated.


How to remove .NET Remoting Fatal problem :Exception



I am implementing Publisher/Subscriber pattern via .NET Remoting. My publisher is waiting for incoming requests on its url. At its side remoting environment configures properly and no problem at all.

At subscriber's end when I make some subscriptions from its side to publisher, it hangs out. I mean program hangs and console shows nothing , and it gone away, no exception here. When I disconnect publisher it now it resume's and follow processing and throws exceptions with stack Trace:

Will try again to add a subscription.System.Net.Sockets.SocketException (0x80004

005): An existing connection was forcibly closed by the remote host


Server stack trace:

   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,

 SocketFlags socketFlags)

   at System.Runtime.Remoting.Channels.SocketStream.Read(Byte[] buffer, Int32 of

fset, Int32 size)

   at System.Runtime.Remoting.Channels.SocketHandler.ReadFromSocket(Byte[] buffe

r, Int32 offset, Int32 count)

Register for COM Interop Problem


I am developing an class library application using .Net 2.0. In the  project property. I have  selected "Register for Com-Interop" property in VS2005 . I want to generate the target library as  64 bit DLL. So in the configuration manager I have selected the target platform as 64 bit.

While building the solution I get the following errors and warning and the build fails even though the DLL is generated but not the TLB.

WARNING : assembly 'mscorlib.dll' targets a different processor.

ERROR : C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(2720,9): error MSB3097: File "C:\ClassLibrary1\bin\x64\Debug\ClassLibrary1.dll" is not a valid assembly.

1. VS2005 is using csc.exe from Microsoft.NET/Framework and not Microsoft.NET/Framework64, not sure if this is a problem, How can I configure VS2005 to use csc.exe present in Framework64

2. Can someone let me know what command VS2005 is executing as a result of selecting "Register for COM Interop"

- Jainish

SSRS Print problem on client machines



Initially after deploying SSRS 2005 report on server, the client machine could not avail print functionality because of the error "Unable to load client print control". Inspite of allowing ActiveX installation, the print functionality was not working.

Googling on this issue I found that rsclientprint.dll needs to be registered in C:\Windows\system32.

After successfully registering this dll, print functionality started working on some machines. However on some machines it started giving the error 'Error loading resource library.(0x8007007E)'.

Now I am stuck as to what needs to be done. Any help is appreciated.

Interop problem: VB6 COM code functions incorrectly when called from .net code.


I have found recently with some machines or some user accounts that calling some VB6 code from .Net fails to execute properly.
I have two examples:

  1. I have this simple VB6 dll, called by VB.Net code, that calls another simple VB6 dll using createobject.  The second object displays a form modally with progress bars, runs queries against a SQL server database to create and fill a table, and then closes (unload) that progress form and returns the table name.  The first object then takes this data to do additional processing on the SQL server and returns a SELECT statement to the object that called it. 
    For most people this works correctly, however for two users on a terminal server it fails to run correctly.  What it does is not close the form, however all of the updates to the database in both dlls are run according to SQL profiler.  The .Net process that called it never seems to get a return value from the COM dll for those 2 users only.  I even tried to recreate the user's profile, but it did not help.  Note that the .Net code calls the first VB6 dll using CreateObject as well.
    The strangest thing about this is what occurred when I added MsgBox calls to try to determine what was wrong with the progress form.  I added one immediately after the form's status bas was updated to "Finished

Error System.outofMemory Exception


Dear All,

i want to ask about Analysis service.

i have a web application that display an OLAP Service.. My Analysis service spesification : Windows 2008 Data center R2 64 bit, SQL 2008 R2 memory 8giga.

when i drill down a dimension it shows an error System.OutOfMemory.Exception.. Actually the memory of my computer still remain 1.5 Giga.. Already use 6,5 giga.


Is there any solution for this Error ?


Aditya Christian

Exception with Microsoft.Office.Interop.Outlook method Members.Add



I am using Visual Studio 2.0 and Microsoft Outlook 11.0 Object Library in a windows application.

I am trying to create a distribution list of contacts in outlook and add members to it. Creating a contact or a distribution list works fine, but when I try to user Members.Add method I get the following exception: "An attempt was made to open an unsupported property."

I am using this post as example code :http://support.microsoft.com/kb/178787

This is the detailed exception:

System.Runtime.InteropServices.COMException was unhandled
  Message="An attempt was made to open an unsupported property."
  Source="Microsoft Office Outlook"
       at Microsoft.Office.Interop.Outlook.AddressEntries.Add(String Type, Object Name, Object Address)


I couldn't find any info about this on the web, I would be happy to get some support.



issues with Microsoft.Office.Interop.Excel in asp.net throwing Exception from HRESULT: 0x800A03EC


i m using Microsoft.Office.Interop.Excel in asp.net for Excel file as anEmail attachment .

i get the data and write to Excel but when i try to save like:

oWB.SaveAs(strCurrentDir +strFile, Microsoft.Office.Interop.Excel.


XlFileFormat.xlWorkbookNormal, null,

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