Board index » Visual Studio » BackgroundWorker Problem
|
MarkinWI
|
BackgroundWorker Problem
Visual Studio276
I would like to be able to pass the BackgroundWorker object and DoWork Event Args to a second function (third function?) and be able to still report the progress. I'm getting the following exception when trying to access BackgroundWorker.CancellationPending or e.Cancel An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll Additional information: Exception has been thrown by the target of an invocation. The problem is I can't stuff everything into the DoWork event to accomplish what I want, but need to call another function which inturn calls a third function. I'm sure a code example would better explain: main() Dim bw as new BackgroundWorker 'Set bw properties (reports progress/support cancelation and call DoWorkAsynch End main Sub bw_DoWork(sender As Object, e As DoWorkEventArgs) handles bw.DoWork 'Get the BackgroundWorker object that raised this event. Dim worker as BackgroundWorker = cType(sender, BackgroundWorker) 'I have multiple arguments to pass Dim args As EncryptFileArgs = cType(e.Argument, EncryptFileArgs) e.Result = mEncryptFile(args.fileIn, args.fileOut, args.keySize, _ args.password, args.fileExpireTime, worker, e) End sub Function mEncryptFile( fileIn, fileOut,keySize, _ password, bworker as BackgroundWorker, e as DoWorkEventArgs) as Boolean 'I need to do some pre-processing here return EncryptFile(keys.IV, keys.KQ, keySize, fileIn, ref fsOut, bworker, e) End Function 'The actual encryption/work goes here EncryptFile(keys.IV, keys.KQ, keySize, fileIn, ref fsOut, bworker, e) 'Report Progress bw.ReportProgress(percent) 'Check if user canceled 'This line throws the exception If bw.CancellationPending Then e.Cancel = true End Function Thanks in advance for any help, Chris - |
