|
Well, the basic usage of the progress bar I have seen would be:
1.-Calculate the whole data that needs to be processed(number of items perhaps).
2.-Process the data in a item by item basis.
3.-Over each iteration of the items, you'll notify the progress bar of the completion of the item, hence making the bar progress .
If you'd like to display an estimated time for the whole collection's process time, you'll need to do something similar, but measure the time it took, calculate average of items processed so far, and multiply it by the number of items to be processed. Not exact but you can get a well estimate.
Is this what you were looking for? We can be more explicit if you let us know whether you're using the default progress bar of one of your own.
|
|
|
|
|
If the job is rather homogeneous, you could use a progress bar that shows progress as the fraction of the work that is done (job items, not seconds); and you could measure how long it takes to get 10% done, then also display a little string giving your estimate of how much time will still be needed.
The formula would be:
time_remaining = time_elapsed * work_remaining / work_already_done
which you shouldn't use as long as work_already_done is too small, as it would initially be rather inaccurate (and even starts with a zero divide).
|
|
|
|
|
I'm trying to query Active Directory and find out if a group exists
I was looking at Howto: (Almost) Everything In Active Directory via C#
and I tried to use the code below, but I'm not sure what I'm doing apparently because I can't get it to work. Can anyone help please?
public static bool Exists(string objectPath)
{
bool found = false;
if (DirectoryEntry.Exists("LDAP://" + objectPath))
{
found = true;
}
return found;
}
modified on Tuesday, January 25, 2011 6:40 AM
|
|
|
|
|
I have been working through some code from articles here, altering to suit my needs etc
One particular thing puzzles me.
Say DgvFilterHost inherits from DgvBaseFilterHost.
Why, if a class inherits from a base class, do they declare an instance of the new class as the base type?
for example....
public DgvBaseFilterHost FilterHost {
get {
if (mFilterHost == null) {
FilterHost = new DgvFilterHost();
It seems it makes additional public properties created in DgvFilterHost inaccessible without casting.
Even then I seem to have trouble accessing additional properties.
Curious as to why you would not make FilterHost type DgvFilterHost in this example?
Thank in advance
AussieLew
|
|
|
|
|
There are many reasons for doing this. One reason for doing this is to use Dependency Injection, where you need to refer to a type in your code, but the actual implementation you'd be working on is a derived class. This is also typical behaviour in abstract class factories.
|
|
|
|
|
salam
dostan irani agar momkeneh email khodeshon ro bezarand ta betoonim ba ham tamas dashteh bashim.
ba tashakor - javad andamani
|
|
|
|
|
As a first time poster, you may not be aware, the etiquette on this site is to post questions in English. By using English, you get the most chance that your question will be answered. If you'd care to edit your question, we may be able to help.
|
|
|
|
|
hello
I am javad andamani from iran.
the question is type FARSI(persian).
tank you
|
|
|
|
|
The question type mught well be Farsi, but the only language you should be posting in (except the dedicated Indian and Chinese Forums) is English. Please read an FAQ.
|
|
|
|
|
Well whoop-do-frakkin-do. That's no good to me - I don't read Farsi, so how in the name of St Steve Jobs do you expect me to be able to answer it? For all I know, you could be posting a recipe for your mother's delicious home made fudge. As I said before - rephrase your question in English. I'd already figured it was Farsi.
|
|
|
|
|
Fudge would be nice... With a few almonds in a german chocolate fudge... Now I'm drooling.... Again!!!
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
|
Never post your email address in any forum, unless you really like spam! If anyone replies to you, you will receive an email (like this one) to let you know.
For your own protection, delete your reply!
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
|
|
|
|
|
Right next to the Reply link is an Email link. If you click on that it should let you send an email to the member whose message you are replying to without posting it publicly in the forum.
Jack of all trades ~ Master of none.
|
|
|
|
|
I have an app that reads data from a sensor, displays the last 60 seconds or so on as a graph and has some other events that need to happen at specific timings. Currently I'm only storing the last 60 seconds of data at any one time in order to stop it from consuming increasing amounts of memory.
However, I now need to think about persisting the data to a file as it's collected and I'm looking for any recommendations on best practice for this. It is very important that the writing to file doesn't interfere with reading data from the sensor and the timing of other events (which are trigger using Theading.Timer) as much as possible. In other words, I don't want disk access to delay processing of data coming from the sensor or to delay running the Timer's delegate method when the timer is up. Or in other, other words, the writing to disk should be very low priority.
The data coming from the sensor isn't particularly fast, it's about 7Hz and what I need to store is the time since the start of recording (in seconds, stored as a double) and the value from the sensor (also a double). I could easily see an hour of data being collected at one time which I (very) roughly estimate as being about 1.5 Mb of raw data. Ultimately this would need to be saved in a human readable format (or at least an Excel importable format) maybe tab delimited text, so the file size on disk would be several times bigger.
So any thoughts? Recommendations? Am I better off trying to store as much as possible in memory and then only write to disk when recording ends? Or is it better to try and write pieces as it's collected?
[edit: typo in topic title]
modified on Wednesday, January 5, 2011 3:39 PM
|
|
|
|
|
With the low volume you have there should be no problem at all (assuming you want to stream it to disk).
1.
Yes you could keep it in memory and output it all when done.
2.
You could also store it in a file; if you keep the stream open, it will not slow down over time, all that will happen is it will periodically be written to disk in chunks of one or a few sectors. For maximum performance, you could store binary data; if ASCII data is needed a post-processing step could be considered. (For your throughput, you could write ASCII text right away).
3.
And finally you could store the data in a database (on the same or a different machine), again in the appropriate numeric format. You could then load it into Excel faster than through a CSV file.
I have one advice on the data capture: whatever means you use for timing it all, in my experience it is wise to store measured time (maybe just DateTime.Now), not calculated time. That way, even when something would go wrong for a while (your system suddenly being very busy at something else) you would still store sensor values with their matching time values.
|
|
|
|
|
Thanks for sharing your thoughts on this.
|
|
|
|
|
You're welcome.
|
|
|
|
|
Would this be a good place for a Synchronized Queue[^]? You could enqueue with a higher-priority thread, and output (dequeue) with a lower one.
Is the response from a Queue fast enough to make that feasible? (I assume so.)
|
|
|
|
|
1.
yes, I guess so. I haven't used it yet, I expect it is a regular queue plus a lock, which would be fine. If the app is adding one item (sensor value + time value) to the queue every few seconds, then obviously anything goes.
2.
don't get me started on thread priorities. IMO they aren't worth much in Windows (I have a background in embedded real-time systems). If your producer needs to have higher priotity, then the consumer might get flooded with data, and if that is acceptable, you basically are admitting you could store everything in memory before flushing it to disk...
|
|
|
|
|
Re: #2
Sure it could be flooded, but this allows for the near-time graph display (mentioned in original post, unless I am misunderstanding it); besides, storing it all in memory seemed acceptable when you proposed it earlier. I don't disagree, this may just be a way to have your cake and eat it too, so to speak.
|
|
|
|
|
if the graph is to show all the measurements (as opposed to say the last 300 samples), then all data is in memory anyway; and I'll eat the cake anyway.
|
|
|
|
|
Actually the graph show the last 60 seconds worth of data. It's about 400 odd points - I actually store 450 in a circular array so it over writes itself. I change the max and min of the time axis as each data point is added so nobody sees the missing past data. I'm surprised it works as well as it does, it gives it a cool chart recorder vibe! Maybe I should try and write an article about it.
|
|
|
|
|
I did exactly that once to experiment and check a flicker free chart would result; it looked great indeed, whereas lots of people seem to believe it can't be done in WinForms at all.
|
|
|
|
|
Mine WPF using the WPF toolkit from CodePlex.
|
|
|
|