Get Time Remaining

Forum for users of SQL Toolkit 3,4,and 5

Get Time Remaining

Postby Rawden » Fri Jan 11, 2008 10:56 am

Is it possible to Get the remaing time of a process (like when you hover over the progress bar in the GUI)?

I've seen this function in the documentation, but I can't seem to use it:

RedGate.SQL.Shared.ProgressTask.GetTimeToComplete(Integer) As String
Rawden
 
Posts: 27
Joined: Tue Nov 07, 2006 2:07 pm

Postby david connell » Wed Jan 16, 2008 1:54 pm

Hi Rawden,
This code is currently not supported and may change without notice.
However I think if you pass in the percentage of the task it will return you back a string of the estimated time left to get to 100%.
If you pass in a negative percentage completion then it will return back an empty string.

Hope that helps.
Regards
David
david connell
 
Posts: 167
Joined: Mon Nov 21, 2005 10:12 am

Postby Rawden » Wed Jan 16, 2008 5:51 pm

Hi David,

Thanks for the reply, I understand what it is supposed to do, but I’m not sure how to reference it. What I mean is, how do I declare it?
If I declare:
Code: Select all
Dim x As New RedGate.SQL.Shared.ProgressTask
debug.Print x.GetTimeToComplete(e.Percentage)

then it has no reference to any of the objects that are running tasks i.e. my Session object or my SQLProvider object and so I get some weird results back (i.e. 17283.16:26:52)

There is an overload that requires a ProgressTaskMethod and an ICancellable, but that doesn’t help me because I don’t know what they are either.

Thanks,
Rawden.
Rawden
 
Posts: 27
Joined: Tue Nov 07, 2006 2:07 pm

Postby david connell » Wed Jan 16, 2008 6:07 pm

Hi Rawden,
here is a description of what happens (ish) sorry if I run over ground that you already know...
This is how RedGates Progress Task works (roughly)
For each task that is ICancellable you create a ProgressTask wrapper object.
You then add these sub tasks into a ProgressTask object again. (This allows you to nest the tasks together, as the progress task dialog box is designed to only display upto 5 tasks including the complete operation.)

You can then create an object that adhears to the IProgressTaskExecutor interface, which then in turn runs those tasks in another thread sequentially until they are complete or the user has pressed cancel. There is feedback given according to the style of interface.
So for example the progress dialog box has a dialog box etc, there is also a version that can sit on the status bar (this is what SQL Data Compare uses when you select a new column to sort by) or there is a command line version that is used by our command line versions of all our products.

I guess that this is not how you are integrating into the Toolkit.
Can you explain more as to what you are trying to do?
david connell
 
Posts: 167
Joined: Mon Nov 21, 2005 10:12 am

Postby Rawden » Wed Jan 16, 2008 6:22 pm

Hi David,

I am developing a Windows Forms app to DataCompare some tables in two SQL databases. I have that side of things working fine. I use ComparisonSession TableMappings, SQLProvider, BlockExecutor and Database objects. For each of these (where applicable) I set their Status property to reference a callback so I can get feedback on the status and inform user on one of my forms. I have the e.messages and the percentages all working fine. I just wanted to add the time remaining as well. How would I add all these to a Progress Task wrapper object?
Rawden
 
Posts: 27
Joined: Tue Nov 07, 2006 2:07 pm

Postby david connell » Wed Jan 16, 2008 6:30 pm

OK it sounds like you have wrapped up your own Progress Task Dialog box...
So you know

what time the task started
what the current percentage though the task,
what the current time is
If you assume that the tasks are linear then you could simply calculate the length of time left.
Ok that last assumuption is a biggy, but from where you are I cannot see at what else you can do. The ICancelable interface does not tell you the information you need to know.
Hope that helps
David
david connell
 
Posts: 167
Joined: Mon Nov 21, 2005 10:12 am

Postby Rawden » Wed Jan 16, 2008 7:15 pm

Yes. I wasn't aware that I could use a standard dialog box, so I made my own. I'm not sure I could calculate a Time Remaining just based on how long it had been running because some of the tasks take longer than others. For example, connecing to a database would take a lot less time than say the comparision or the Execution.

Ah well, I thought it would be easier to use, but never mind. Thanks for your help David. :D
Rawden
 
Posts: 27
Joined: Tue Nov 07, 2006 2:07 pm


Return to SQL Toolkit Previous Versions

Who is online

Users browsing this forum: No registered users and 0 guests