February 2006 Entries

Here's a link to the hotfix for the winforms designer error that looks like this:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes. TypeLoad failure. Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

at System.Reflection.Module.GetTypesInternal(StackCrawlMark& stackMark)
at System.Reflection.Assembly.GetTypes()
at Microsoft.VisualStudio.Shell.Design.AssemblyObsoleteEventArgs..ctor(Assembly assembly)
at Microsoft.VisualStudio.Design.VSDynamicTypeService.ReloadAssemblyIfChanged(String codeBase)
at Microsoft.VisualStudio.Design.VSDynamicTypeService.CreateDynamicAssembly(String codeBase)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly()
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.Search(String fullName, String typeName, Boolean ignoreTypeCase, Assembly& assembly, String description)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchProjectEntries(AssemblyName assemblyName, String typeName, Boolean ignoreTypeCase, Assembly& assembly)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, ReferenceType refType)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(ITypeResolutionService trs, String name, Dictionary`2 names)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, Dictionary`2 names, CodeStatementCollection statements, String className)
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)

I got my ASP.NET Podcast shirt, and there's a lot of Wally to be had it seems...

You can't really tell from this pic, but the image of Wally takes up nearly the entire back of the shirt...

But even this looks phenomenal on yours truly :P

[ Currently Playing : Last Call - Kanye West - (12:41) ]

I've been wanting to setup subversion for PostXING for a while so I can have more control over who has commit access and various adminy tasks that are only available thru emailing the already busy staff of sourcegear when hosting code on vaultpub.

Thankfully, I'm not the only person who has had this idea. To that end, this blog post was instrumental in outlining the steps to take to get subversion up and running on a windows box. The only issue that I had which was rather annoying was I kept getting an error stating that svn was "unable to open an ra_local session to URL" when trying to import code on the host. So, I did things the painfully slow way of adding files/folders from a client machine that already had the code on it. The good news is that PostXING now has its own subversion repository: svn://postxing.net/PostXING read access is still there for all, but now I can specify who can and cannot commit changes. So nice.

This is a private boolean member of the new BackgroundWorker class in .NET 2.0. If it were public, perhaps there would be less questions like this one on the gotdotnet messageboards. I ran into a similar problem recently and decided that instead of catching an exception when the BackgroundWorker is running, I would emulate the isRunning member myself.

Since this is multithreaded by its nature, I decided to use a lock object to control access to a static boolean member in the class that uses the BackgroundWorker component.

static bool isRunningBgWorker = false;
static object lockObj = new object();

...

if (!isRunningBgWorker) {
	this.backgroundWorker1.RunWorkerAsync();
}

I check to see if it's running before even setting it off to do the work.

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
	lock (lockObj) {
		isRunningBgWorker = true;
	}

The first thing that happens when the DoWork eventhandler is called and

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
...

	lock (lockObj) {
		isRunningBgWorker = false;
	}
}

the last thing when the work is completed: controlled access to the isRunningBgWorker member. Hope this helps somebody else out there who is having trouble with the BackgroundWorker component.