Advertisement

09.14.2007 at 08:32AM PDT, ID: 22829178
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

ASynch delegate / Invoke is freezing application after windows is locked.
Tags: freeze, invoke, delegate
I'm firing off 4 asynch delegates, each with the same callback.  Inside the callback I'm keeping track of a simple integer counter.  When the counter reaches 4, it reaches up into the main GUI, and makes the appropriate panel visible, using Invoke.  Everything works GREAT.

Now, if I lock windows, and then unlock it, my entire application is completely frozen - I can't click anything, and if I drag another window in front, then move it, the application will not re-paint, but instead becomes distorted.

This even happens if I go through the asynch routine, and then do some other stuff with the program, then lock windows.
Start your free trial to view this solution
Question Stats
Zone: Programming
Question Asked By: ARACK04
Solution Provided By: AlexFM
Participating Experts: 2
Solution Grade: A
Views: 0
Translate:
Loading Advertisement...
09.14.2007 at 08:50AM PDT, ID: 19892627

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 08:58AM PDT, ID: 19892714

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:03AM PDT, ID: 19892760

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:18AM PDT, ID: 19892869

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:35AM PDT, ID: 19893026

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:38AM PDT, ID: 19893057

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:39AM PDT, ID: 19893061

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:42AM PDT, ID: 19893087

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:43AM PDT, ID: 19893104

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 09:46AM PDT, ID: 19893128

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.14.2007 at 01:40PM PDT, ID: 19895010

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.15.2007 at 04:21AM PDT, ID: 19897205

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
09.15.2007 at 01:43PM PDT, ID: 19898563

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Handhelds / PDAs
  • Displays / Monitors
  • Components
  • Networking Hardware
  • Peripherals
  • Laptops/Notebooks
  • Storage
  • Servers
  • Desktops
  • New Users
  • Misc
  • Apple
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMWare
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMWare
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Community Advisor
  • Lounge
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • Community Advisor
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
09.14.2007 at 08:50AM PDT, ID: 19892627

Rank: Sage

Try to replace Invoke with BeginInvoke for GUI update from the delegate callback.
 
09.14.2007 at 08:58AM PDT, ID: 19892714
no change
 
09.14.2007 at 09:03AM PDT, ID: 19892760

Rank: Guru

What AlexFM wrote is something you must do.
Invoke waits for the method to complete, so if an event is being handled by the user interface thread currently, Invoke will waitfor that handler to finish. Here is a potential for deadlock;
BeginInvoke is sometimes a better choice because it doesnt wait for the invoked method to finish runningit just adds the request to run the method to the frameworks internal event queue and then returns immediately.

Just an idea, that might help
It seems that when you lock windows the main thread or other threads "die" somehow!
If you can test the status of the treads, and discover if they are "alive" or "dead" it might give you and idea how to work it around.
Some more expirience expert can help more.
Assisted Solution
 
09.14.2007 at 09:18AM PDT, ID: 19892869

Rank: Sage

Remove Invoke/BeginInvoke call from asynchronous callback. Does the program freeze now?
Add a lot of Trace.WriteLine calls to all suspicious functions, specifically, all functions working with asynchronous delegate, Invoke/BeginInvoke call and UI callback function. It can look like this:

void DoSomething()
{
    Trace.WriteLine("DoSomething started");

    Trace.WriteLine("Call BeginInvoke");
    form.BeginInvoke(...);
    Trace.WriteLine("BeginInvoke returned");

    ...
    Trace.WriteLine("DoSomething started");
}
...

Run DebugView and your program, reproduce the bug and see what call doesn't return in the DebugView. This should happen in some function running in the main application thread which is responsible for GUI update. Having this information, you can detect deadlock reason.
 
09.14.2007 at 09:35AM PDT, ID: 19893026
I completely got rid of the callback function - now I just have 4 delegate.begininvokes (and no form.Invoke or form.BeginInvoke).  I put traces before and after each one.

Everything run 100% as expected, as it did before.  The same problem stil exists though, which is that after locking windows, and unlocking it (logging back in), my application is now completely frozed, won't accept any input, can't re-paint, etc.
 
09.14.2007 at 09:38AM PDT, ID: 19893057
This is what the delegates getting called looks like, in case it will help at all.

                lc = New LoadCustomerDelegate(AddressOf HighLightsPanelClass.GetInstance().LoadCustomer)
                Trace.WriteLine("start 1")
                lc.BeginInvoke(oCust, Nothing, Nothing)
                Trace.WriteLine("end 1")

                lc = New LoadCustomerDelegate(AddressOf AccountsPanelClass.GetInstance().LoadCustomer)
                Trace.WriteLine("start 2")
                lc.BeginInvoke(oCust, Nothing, Nothing)
                Trace.WriteLine("end 2")

                lc = New LoadCustomerDelegate(AddressOf CreditDocumentsPanelClass.GetInstance().LoadCustomer)
                Trace.WriteLine("start 3")
                lc.BeginInvoke(oCust, Nothing, Nothing)
                Trace.WriteLine("end 3")

                lc = New LoadCustomerDelegate(AddressOf NotesPanelClass.GetInstance().LoadCustomer)
                Trace.WriteLine("start 4")
                lc.BeginInvoke(oCust, Nothing, Nothing)
                Trace.WriteLine("end 4")
 
09.14.2007 at 09:39AM PDT, ID: 19893061

Rank: Sage

So, the reason is in the delegate.begininvoke stuff. Please show your code which causes this behavior.
You can continue this investigation commenting off different code lines until you detect exact action which causes program freezing.
 
09.14.2007 at 09:42AM PDT, ID: 19893087
I don't see how this can be a regular code exception - the code does what it's supposed to.  This problem only occurs when I lock my OS.  Has anyone seen this behavior before?
 
09.14.2007 at 09:43AM PDT, ID: 19893104

Rank: Sage

What is oCust?
 
09.14.2007 at 09:46AM PDT, ID: 19893128
Just a business layer object.  Again, this method works perfectly until I like windows.  Nothing is null, or anything like that.
 
09.14.2007 at 01:40PM PDT, ID: 19895010
Screw it, I moved the code to a regular thread, hit start, and it works fine now.  If anyone else can think of why this was happening I'd be happy dole out the points, if not I'll split them between you two.
 
09.15.2007 at 04:21AM PDT, ID: 19897205

Rank: Sage

The only thing which looks suspicious here is using BeginInvoke without EndInvoke, which causes small memory leak, however, this is obviously not enough.
Trying to recall some .NET internals that I know, I can say that using BeginInvoke without EndInvoke causes leaking IAsyncResult instance and one native Windows event. Possibly it is internally implemented using thread from the thread pool, which is released only when EndInvoke is called. I don't know whether this is enough to get this strange behavior.
Accepted Solution
 
09.15.2007 at 01:43PM PDT, ID: 19898563
Thanks, I'll give this a try on Monday.
 
 
20080236-EE-VQP-29 / EE_QW_1_20070628