C# - ThreadPool.QueueUserWorkItem Causes App To Hang Until Finished?
Dec 10, 2010
This may be due to a lack of understanding of what's going on under the hood or simply a lack of understanding of threading in general. When a user logins I need to run some tasks that call web services to update data in my system. Since the services could take a considerable amount of time I thread the entire process. However, even though I think I'm running the whole series of tasks in a thread separate from my application, my application waits until the called function is finished before it proceeds.
WindowsIdentity identity = WindowsIdentity.GetCurrent();
Manager manager = (Manager)Session["Manager"];
ThreadPool.QueueUserWorkItem(new SafeWaitCallback().Call(identity, delegate(object noCallBack)
{
manager.RunAccountUpdater(identity);
}));
The application hangs until the function "RunAccountUpdater" is finished and the callback occurs. What am I doing wrong/not understanding?
View 1 Replies
Similar Messages:
May 18, 2010
after invoking an async method using ThreadPool.QueueUserWorkItem how do i lookup the assigned thread id?
View 4 Replies
Feb 3, 2010
I am trying to use ThreadPool.QueueUserWorkItem to send daily newsletter to my website subscribed members (about 500 members) at 2:00 am every day automatically.I placed record on txt file everytime send out email for debuging, then I found that only about 165 members been send out. every day is different number but just about.never finished whole 500 members.looks like thread aborted before finish sent out all emails.anybody knows what's going on here?I am using shared hosting, so I couldn't run my own window service for this.
View 1 Replies
Jun 26, 2010
I've used mvc for a few weeks now, and just realized that my controller constructor is invoked on every action, and that's where a model is typically instantiated in the examples I've seen, so the model never lives beyond one request. I have older third party db and it seems that some judicious in-memory state management would make sense in my intra-net app. It seems like a true classic mvc app ( non-web oriented) would allow for retention of model instances in-memory (one fundamental repository behavior is in-memory collection - re: M.Fowler). I am not able to use Entity Framework, and a little curious if it does some caching instead of always immediately persisting to db, thereby providing that repository behavior. Do I have to save my model instance to the ole Session / TempData object to retain it in memory across *numerous* controller actions? Or does this implementation absolutely require some other mechanism like NHibernate? Seems like just keeping something
View 1 Replies
Feb 19, 2010
In an async http handler, we add items to the ASP.NET cache, with dependencies on some files. If the async method executes on a thread from the ThreadPool, all is fine:
AsyncResult result = new AsyncResult(context, cb, extraData);
ThreadPool.QueueUserWorkItem(new WaitCallBack(DoProcessRequest), result);
But as soon as we try to execute on a thread out of the ThreadPool:
AsyncResult result = new AsyncResult(context, cb, extraData);
Runner runner = new Runner(result);
Thread thread = new Thread(new ThreadStart(runner.Run());
... where Runner.Run just invokes DoProcessRequest,
The dependencies do trigger right after the thread exits. I.e. the items are immediately removed from the cache, the reason being the dependencies.We want to use an out-of-pool thread because the processing might take a long time.
So obviously something's missing when we create the thread. We might need to propagate the call context, the http context...
Note: off-the-shelf custom threadpools probably solve this. Writing our own threadpool is probably a bad idea (think NIH syndrom). Yet I'd like to understand this in details, though.
View 1 Replies
Jul 30, 2010
I've pretty much gotten the hang of importing data from a database onto a website using asp.net, now I want to do the reverse.I want a site that the user logs into and makes 4 different selections from 4 drop-down lists and those choices are recorded onto the database. I've worked out the log in part (it was actually really easy...) but I wanted to know a good source to learn about exporting data.
View 3 Replies
Jan 8, 2010
I am battling a strange error. I have a form, formA, that has a modal popup extender to show a panel containing a gridview. One of the columns on the gridview is a link button that launch a new form, formB, in a new window (ie. the link contains target=_blank).
The code runs as expected. That is, the modal popup displays the grid and clicking the hyperlink launches the page in a separate window. When you close the new page's window, as expected formA is still displaying the modal popup. If you close this modal popup it goes away as expected. Now, the wierd part. If you click on a control on FormA that causes a postback, the load event fires, but the postback event (ex button_click) handler is never called. The app is essentially hung. The only way to regain control is kill the application. This hang only occurs if you click on the hyperlink. If you just open and close the modal popup there are no problems.
View 1 Replies
Feb 18, 2011
I've created a new web application in Visual Studio 2008. Then I added a button, and in the Button1_Click event I put a redirect statement to a website. This is the only code I've added to the default app. But when I run this application on my development server and click on the button, a browser window opens and then permanently hangs without showing the page content.This is a simplified version of a problem I'm having in another app. I can't get past this. Why does this resonse.redirect statement cause the browser (I'm using IE8 and Windows Vista) to hang?
Protected
Sub Button1_Click(ByVal
sender As
Object,
ByVal e
As EventArgs)
Handles Button1.Click
Me.Response.Redirect("http://www.microsoft.com")
End
Sub
View 2 Replies
Mar 7, 2011
I'm hoping someone else has experienced this and has some suggestions. The actual dcms process goes pretty quickly, but in between projects it hangs after printing: Building: XXX.YYY.ZZZ (Debug) After a few minutes (been 10 so far on this current run), it jumps to:
Performing main compilation...
/Library/Frameworks/Mono.framework/Versions/2.10.1/bin/dmcs /noconfig "/...
Build complete -- 0 errors, 0 warnings
Building: XXX.YYY.ZZZ (Debug)
Then hangs again for another few minutes. This is a sln file with 29 csproj projects in it that was originally created in Visual Studio 2010. I'm wondering if there is a better way to set this up - potentially a native MD file format?
View 1 Replies
Feb 8, 2011
I've been writing an app using the awesome new Razor view engine and for the most part, things have been great.
One issue I keep running into, however, is that if I should happen to write invalid code, such as referencing a null property or even a non existent property, rather than throwing an error, something happens in the background that causes the browser to wait and wait and wait and if I do not cancel the browser's request quick enough, IIS will simply hang.
It seems as if it enters some sort of loop. CPU usage goes up (though not terribly high) and restarting IIS via either GUI or iisreset command seems to take abnormally long (presumably while it waits for the process to safely shutdown).
This also happens for other invalid code scenarios such as failing to close a code block with a closing brace.
View 1 Replies
Mar 28, 2011
This MSDN example for an Asynchronous Handler starts the new thread using ThreadPool.QueueUserWorkItem.
I thought that you should not use ThreadPool.QueueUserWorkItem to start the new thread as the thread is taken from the ASP.net thread pool and defeats the purpose of using an Asynchronous handler.
Is the example wrong?
View 1 Replies
Aug 25, 2010
From a web page I start a time consuming job and update it's status on the UI using webmethod.
Job is done in a thread:
ThreadPool.QueueUserWorkItem(new WaitCallback(DoJob), parameters); Job set's it status using static properties, and when web page, using javascript, calls web method it read those properties.
[System.Web.Services.WebMethod]
public static ProcessStatus GetProgressStatus()
{
Jober.Lock.EnterReadLock();
ProcessStatus st = new ProcessStatus(Jober.PercentageCompleted, Jober.TotalNumber);
Jober.Lock.ExitReadLock();
return st;
}
The UI progress is updated through javascript, the problem is that after thread completes I need to update UI on server side, so javascript won't help me here. What Is the best way to signal when thread is completed?
View 1 Replies
Nov 24, 2010
I have a web service that uses ThreadPool to delegate a task to a thread but it runs on ASPNET (System.Environment.UserName) while the main thread runs as windows account. How can I make this thread run with same windows account. Note that I have impersonate=true in web.config. This is causing problems accessing database.
View 1 Replies
Jan 27, 2010
My application is a asp.net 3.5 running on iis 6 (windows 2003)
This application is serving 1000's of users daily (100-500 users online).
I want to send an email newsletter to customers weekly.
Around 200,000 emails every time.
This is the code im using:
ThreadPool.QueueUserWorkItem(new WaitCallback(AsyncProcessMailerQueue), null);
private static void AsyncProcessMailerQueue(object data)[code]....
When testing this locally (on my dev machine) i see the application is working alot slower.
Is there a better way to write this code? Should i use ThreadPool.QueueUserWorkItem or create a new thread using Thread t = new Thread(new ThreadStart(DoWork)); ? Will it be better to create a totally seperate application for the purpose of sending the newsletters. will that help if ill run this application on the same machine?
i've seen other posts here talking about ThreadPool vs Thread but its seem no one is sure which is better.
View 3 Replies
May 14, 2010
Am implementing the threadpool concept and have doutbt in threads being created.
[Code]....
Initially i gave (1,1) in semaphores and only one thread was created and it did only one task, and (5,5) created one thread and it used for all the times.
Is ter anything wrong in wat i did or any other way of doin other than semaphores. And mainly wat abt the remaining 20 threads in threadpool? its a waste of CPU right. Can i create only 5?
View 6 Replies
Aug 10, 2010
I have a page that has a note to the user about the file they're about to download and a button to click to start the download. When they click the button, it does a Response.Redirect to another page with the following code in its Page_Load:
Response.Clear()
Response.Buffer = True
Response.AppendHeader("Content-disposition", "attachment; filename=" & FileName)
Response.AppendHeader("Content-length", FileSize.ToString)
Response.ContentType = "application/download"
Response.WriteFile(Page.ResolveUrl(FilePath))
Response.Flush()
Response.End()
I want the download to start and then I want this page (which is a tab in the browser) to close.
The code to download the file works fine. I just can't figure out how to close this tab when it's finished. I understand that Response.End means that I can't put any more code this page; it will be ignored. But how do I get this tab to close?
View 5 Replies
Feb 10, 2010
I'm writing an ASP.NET webapp that will copy the contents of a CD to a network share. I need to check periodically if the copy job is finished.
One way of doing this is checking the network share folder to see if the file size has changed since the last check, but that seems kind of dodgy. Does anyone have a better idea how to do this?
EDIT
some more explanation: Basically I'm calling a JsonResult action method every 5 seconds, called getStatus(source,destination). This method needs to check the following:
- if the source dir is still empty, copy cannot start --> return status "waiting"
- if the source dir contains files, copy can start -_> call copy method + return status "copying"
- if the destination dir contains files, and file size stays the same, copy is finished --> return status "finished"
View 2 Replies
Oct 15, 2010
I have my own SQL based session class. I want to automatically commit the data in the session at the end of program execution (i.e. at the end of serving the page request). Do object destructors (finalizers) not get executed at the end of every request? Is there anyway of doing this instead of having to explicitly call a Dispose() method every time I am done with my session object?
View 4 Replies
Dec 17, 2010
I have a webpage with two usercontrols. Usercontrol1 displays the time and the Session["Username"].
The default Session["Username"] is 'guest', which will change as soon as you are signed in. Usercontrol2 is the sign in form. The webpage doesn't cache so everytime you should get a "fresh" page?
The follow happens when a user signs in: In usercontrol1 the Labeltime gets updated but labelWelcomeUsername doesn't.
[Code]....
View 3 Replies
May 25, 2010
I have a custom component:
[Code]....
[Code]....
I try to create a new component instance like this:[Code]....
[Code]....
View 2 Replies
Dec 3, 2010
I want a Javascript function to be called automatically after the UpdatePanel has finished updating its contents. I don't want to use:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest
and then call a JS function. This is because I have more than one update panels and I'll have to write all the condions to check which UpdatePanel was actually called and then do something. Can something be done using Triggers in UpdatePanel. Kindly let me know how this can be done.
It would be great of you could post a sample code too.
View 4 Replies
Feb 3, 2010
Anyone ever try to print the finished output of a wizard control? That is, after the user fills out all 5 steps of the wizard, the user clicks "print" to print all the data from steps 1-5. Normally, a bit of javascript will do the trick, but each time you go to a new "step" the page is refreshed and controls are added/removed from the page.
So if nametxtbox is in step one, when you click step two the control is removed from the page. If I could just pull the values from steps 1-4 from whereever they are stored (session state?) that would probably be good enough. I could load all the values on one page & run some javascript from there.. Not sure where to go from here..hoping for someone will be able to guide me in the right direction...
View 1 Replies
Mar 8, 2011
I have a button that opens up the <div "moveMe"> with a AnimationExtender. The code works fine.
Now, inside the <div> there is a Panel1 that is Visible="false". This needs to be invisible while the <div> is opening up because the Panel1 holds alot of controls and stuff which makes the animation extremely slow.
The task I am wondering is, how it is possible to make this Panel1 Visible="true" when the animation is finished?
[Code]....
View 3 Replies
Jan 13, 2011
I have a button that needs to check if a contact exists.I have used the Jquery ajax function to do this and I do successfully gind out if the contact exists or not.However I cannot find a way for the javascript code to wait until the ajax has finished so I can return true/false to the button for it to continue server side function. I.e.
[Code]...
View 4 Replies
Jul 7, 2010
I have an UpdatePanel with a repeater in it that is re-bound after a user adds an item to it via a modal popup. When they click the button to add a new row to the repeater the code-behind looks something like this:
protected void lbtnAddOption_Click(object sender, EventArgs e)
{
SelectedOption = new Option()
{
Account = txtAddOptionAccountNumber.Text,
Margin = chkAddOptionMargin.Checked,
Symbol = txtAddOptionSymbol.Text,
Usymbol = txtAddOptionUsymbol.Text,
};
Presenter.OnAddOption(); // Insert the new item
RefreshOptions(); // Pull down and re-bind all the items
mpeAddOptionDialog.Hide(); // Hide the modal
// ... Make call to jQuery scrollTo() method here?
}
This works fine and the new row will show up quickly via the UpdatePanel. However, there are often hundreds of rows and where the new one is added is based on the current sorting column used. So, I wanted to take this as a chance to use the sweet jQuery ScrollTo plugin. I know that if I give it the ID of my overflowed container div and the ID of an element within it, it will smoothly scroll straight to the users newly added row. However, there are two problems:
I need to find the appropriate row so I can snag the ClientID for it. I need to execute the jQuery snippet from my code-behind that will cause my newly updated repeater to scroll to the right row. I've solved #1. I have a reliable method that will produce the newly added row's ClientID. However, problem #2 is proving to be tricky. I know I can just call ScriptManager.RegisterStartupScript() form my code-behind and it will execute the JavaScript on my page.
The problem I'm having is that it seems that it is executing that piece of JavaScript before (I'm guessing) the newly refreshed DOM elements have fully loaded. So, even though I am passing in the appropriate jQuery line to scroll to the element I want, it is erroring out for me because it can't find that element yet. Here is the line I'm using at the end of the method I posted above:
string clientID = getClientIdOfNewRow();
ScriptManager.RegisterStartupScript(this, typeof(Page), "ScrollScript", String.Format("$("#optionContainer").scrollTo("{0}", 800);", clientID), true);
What do I need to do so I can ensure that this line of JavaScript isn't called until the page with the UpdatePanel is truly ready?
View 2 Replies