.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

Unexplained behavior of GC and strong/weak references.

Posted By:      Posted Date: September 18, 2010    Points: 0   Category :.NET Framework
Hello. I've set up this test console application, running on .NET 3.5 SP1.   I wanted to test the behavior of weak references inside finalizers, so I've created this test application, but it does not behave as I would expect - The GC.Collect statements do not really collect the ResContainer object, and I cannot understand why.   This is the code I've used:   using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Threading; namespace ResurrectionTest { public class ResTest { private List<ResContainer> _resContainers; private object _myObj; private class SampleObject { public object Tag { get; set; } } private class ResContainer { public WeakReference WeakRef { get; set; } public List<ResContainer> ContainingList { get; set; } public object Tag { get; set; } ~ResContainer() { object obj = WeakRef.Target; if (obj != null) { ContainingList.Add(this); Console.WriteLine("Container resurrected"); GC.ReRegisterForFinalize(this); } else { Console.WriteLine("Container destroyed"); } } } public void Run() { Console.WriteLine("Preparing variables..."); _myObj = new SampleObjec

View Complete Post

More Related Resource Links

Custom Editing Behavior for DataGridView TextBox Columns

For various reasons I'm using a DataGridView instead of a ListView, and while configuring the DataGridView to look like a ListView wasn't much of a problem, there's one thing that got on my nerves, which is the behavior of textbox cells in edit mode: It is much too easy to leave the edit mode accidentally, simply by pressing the cursor keys at the wrong time. For example when the text caret is positioned behind the last character of the textbox cell content, and you press the right arrow key

Rendering ASP.NET Script References into the Html Header

One thing that I've come to appreciate in control development in ASP.NET that use JavaScript is the ability to have more control over script and script include placement than ASP.NET provides natively. Specifically in ASP.NET you can use either the ClientScriptManager or ScriptManager to embed scripts and script references into pages via code.

*.axd script references not being rendered to browser


I'm running VS2010 with .net 4.0, and am running into issues with the .net ajax script tags mysteriously not being rendered to the browser.

So far I've reduced it to a scenario where I set the DataSourceID property of a databound control.  More specifically, I've only tested it on a Gridview and a DropDownList.

This can be reproduced fairly easily on my machine by following these steps:

1. Create a new empty Web Application Project

2. Create a new Web Form

3. Add a ScriptManager inside the form

4. Add a DropDownList and a DataSource (I used an ObjectDataSource)

5. Set the DataSourceID property of the DropDownList to the ID of the DataSource.  This can be done either declaratively on the .aspx page, or in the code behind in the aspx.cs page, and both produce the same results.

6. Open the page in a browser and watch as you get a javascript error stating "Sys is not defined" and notice that the page source contains no script tags referencing *.axd scripts.

Here's my source code showing my set up:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ScriptResourceFAIL.Default" %>


Run Button Behavior: Suggestion/Bug


Note: This could be a bug or considered as suggestion. I am not looking for solution.

1: I have ImageWatermark.cshtml open and currently in focus.

2: I have Photo1.jpg selected in left Files workspace.

3: Now if I Click "Run", instead of opening ImageWatermark.cshtml it trys to open Photo1.jpg and it fails.

So ideally I would expect the "open file (ImageWatermark.cshtml) to run rather than running the selection from Workspace.

Could not find default endpoint element that references contract 'CurrencyProxy.CurrencyServiceSoap



I created 2 projects in my solution:

  1. Classic asp.net web service (asmx)
  2. Class library project which references service
  3. web site project which references class library project
  4. Windows app project which references service.

Both projects were created in 3.5 framework and in Visual Studio 2008 Beta 2.

I added web service reference to Class library project. When it asked for namespace I typed "CurrencyProxy". Projects build ok, but when I run web app, Class library throws an error: Could not find default endpoint element that references contract 'CurrencyProxy.CurrencyServiceSoap' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

I believe it has something to do with app.config in Class library project. Here is part from app.config:

<binding name="CurrencyServiceSoap" closeTimeout=

Word Automation - Multiple DCOM Errors/Behavior

Before I get started, I already know that Microsoft does not support and highly discourages server-based MS Office automation.  I've read a multitude of posts and smarmy "*wink*, here's a link" replies, so I'm looking for actual help here, not condescending reprimands.

That notwithstanding, here is my problem.  I have developed a simple method that will open a local Word document, modify some header information, and then save the document as a new file.  As expected, it works great as a console/windows app, but as soon as I went to ASP.NET, DCOM jacked my world up when accessing the app remotely from a different domain account (that has access to the ASP.NET app.  For reference, my method is shown below:


1    public static string ModifyAndSaveBuildDocument(string localFilePath, BuildDocumentType docType, string buildNumber, DateTime buildDate, string projectName)
2            {
3                try
4                {
5                    ProjectConfiguration config = (ProjectConfiguration)ConfigurationManager.GetSection("ProjectConfiguration");

CLR Inside Out: Using Strong Name Signatures


Strong name signatures (and signing in general) are a key facet of Microsoft® . NET Framework security. But regardless of how well designed . NET signatures may be, they won't offer the maximum benefit if you don't know how to use them properly.

Mike Downen

MSDN Magazine July 2006

Test Run: Determining .NET Assembly and Method References


Before you can test any software system effectively, you must understand the system under test. If the system includes the Microsoft® . NET Framework, understanding the system under test includes understanding its assembly and method dependencies.

James McCaffrey

MSDN Magazine March 2006

Editor's Note: 20 Years and Still Going Strong!


Microsoft Systems Journal (MSJ) was founded in 1986. At the time, no other publication focused specifically on the needs of programmers who were using Microsoft tools and technologies. Two issues were produced in the first year, each with five articles.

Joshua Trupin

MSDN Magazine April 2005

Cryptography: Employ Strong Encryption in Your Apps with Our CryptoUtility Component


When storing sensitive data, you need to be able to identify threats, determine how these threats interact with each other, and how issues can combine to constitute a vulnerability that will leave your data exposed. With a good understanding of the various cryptographic algorithms, salt, hashes, ACLs, and other available techniques, you'll be in a better position to protect your critical data.

Michael Stuart and J Sawyer

MSDN Magazine November 2004

Delegates in .NET: A Primer on Creating Type-Safe References to Methods in Visual Basic .NET


Delegates, new in Visual Basic .NET, are type-safe, object-oriented references to methods. By using delegates, you make your methods accessible to others and therefore more extensible. This article provides an introduction to delegates, their benefits, and how they are used.Here the author shows you how to declare, create, and use delegates to invoke instance and shared methods at run time, and how to implement delegates as properties. He then goes on to provide examples of how delegates are used for callback functionality and explains the relationship between delegates and events. Finally, the article provides a glimpse at how delegates are implemented in intermediate language code by the Visual Basic .NET compiler.

Jesse Liberty

MSDN Magazine February 2003

ModalPopup/UpdatePanel from codebehind, inconsistent behavior onClick


First post bear with me please:

I have a simple form with a list of linkbuttons, each fires the same onclick event which sets an indicator image.  I have a dummy button with style="display:none" which I have set as the TargetControlID of the modal.

onClick event from the imagebutton, the modal is shown via modal.Show().  The cancel button inside the modalpopup fires an event which turns off the indicator image and hides the modal via modal.Hide(). 

The events fire perfectly, it's very simple!  Although after doing some testing I noticed the modalpopup is not presented after the 6-10th cycle of clicking the open event, then clicking cancel.  The grey background appears but it is behind the main panel and the modal is either presented behind this or is just simply not displaying. 

I spent hours researching various methods, implemented the CancelControlID to see if it was somehow tied to my call of modal.Hide() that fails.

This occurs with an updatepanel only.  The behaviour is much cleaner this way, so I would hope to be able to implement this.  I have basically eliminated everything but these two events!  Please help

Bizzare behavior of Digest authentication with HttpListener.


While trying to use Digest authentication with HttpListener, I expected it to act fairly close to how Basic does. Basic works fine with no surprises. With Digest, however: 

  1. HttpListener/http.sys driver takes on itself to authenticates user, without even passing request to my code (listener.GetContext() never gets unblocked) so ASP.NET application never has a chance to authenticate the user. I can see responses generated by "Microsoft-HTTPAPI/2.0" with WWW-Authenticate headers. I thought application should have a chance to authenticate the request with Digest user identity in the header. Is it possible to do?
  2. While insisting on Digest-authenticating users on its own, "Microsoft-HTTPAPI/2.0"/HttpListener/http.sys successfully authenticates domain users, but not computer users. I tried user name that includes computer name, realm name, computer name in the FQDN format - nothing works. Why such inconsistency?

Thank you,


Releasing references to late-bound COM object

Hi, In my .NET 2.0 application I am performing automation of a third-party COM component via reflection. Something like this: Type t = Type.GetTypeFromProgID("V81.ComConnector", true); object instance = Activator.CreateInstance(t); object[] arr = new object[] { "Srvr='xsystemdevcpr:1542'; Ref='ivcbase'" }; object retValue1 = instance.GetType().InvokeMember("Connect", BindingFlags.InvokeMethod, null, instance, arr, null, null, null); object retValue2 = retValue1.GetType().InvokeMember("Processings", BindingFlags.GetProperty, null, retValue1, null, null, null, null); object retValue3 = retValue2.GetType().InvokeMember("CurrencyRates", BindingFlags.GetProperty, null, retValue2, null, null, null, null); object retValue4 = retValue3.GetType().InvokeMember("Create", BindingFlags.InvokeMethod, null, retValue3, null, null, null, null); arr = new object[] { "<Rates><Rate><Name>USD</Name><Date>2010-08-01</Date><Value>30.0000</Value></Rate><Rate><Name>EUR</Name><Date>2010-08-01</Date><Value>38.0000</Value></Rate></Rates>" }; object retValue5 = retValue4.GetType().InvokeMember("LoadRates", BindingFlags.InvokeMethod, null, retValue4, arr, null, null, null); ReleaseComObject(instance); Rele

Is there to tie assemblies together with a strong name key in .NET 4

Hello, I would like only to allow callers with a specific strong name to access my assemblies. So is there a way in .NET 4 to demand a strong name between assemblies? Thanks Henrik.

Yellow exclamation mark in references: What does it mean

In my c# project, i have references to c++/cli and native c++ projects under "references". (i need to have them there, in order to be able to use msbuild on my solution from the command line.). all of these projects have yellow exclamation marks overlayed to the "reference" symbol. (vs 2010). i can't find any explanation what these symbols are supposed to tell me. any ideas ? WM_THX -thomas woelferhttp://www.die.de/blog
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