I agree with James Love and don't dispose of the current context's spweb and spsite objects. But you might also run into this another problem with multiple update panels on the page. Did you implement anything to handle this?
I had to use Sys.WebForms.PageRequestManager.getInstance() in javasript and check if an update was already in progress and if so, queue the update panel request until the first one returns. I used code similar to the code below to fix this issue.
var _callQueue = new Array();
var _executingElement = null;
var _prm = Sys.WebForms.PageRequestManager.getInstance();
_prm.add_initializeRequest(initializeRequest);
_prm.add_endRequest(endRequest);
function initializeRequest(sender, args) { if (_executingElement != null) { var postBackElement = args.get_postBackElement(); if (_executingElement != postBackElement.id) { args.set_cancel(true); Array.enqueue(_callQueue, postBackElement.id); } } }
function endRequest(sender, args) { _executingElement = null; while (_callQueue.length > 0) { var elements = Array.dequeue(_callQueue); var webpart = document.getElementById(elements[1]); if (webpart != null) { var progress = document.getElementById(elements[2]); if (progress != null && progress.style != null) { progress.style.display = 'none'; } if (webpart != null && webpart.style != null) { webpart.style.display = 'block'; } } else { _executingElement = elements[0]; setTimeout("__doPostBack('" + _executingElement + "', '')",0); return; } } }