Outlook Banter

Outlook Banter (http://www.outlookbanter.com/)
-   Add-ins for Outlook (http://www.outlookbanter.com/add-ins-outlook/)
-   -   Multithreading (http://www.outlookbanter.com/add-ins-outlook/78901-multithreading.html)

Stuart Parker September 18th 08 09:04 PM

Multithreading
 
Hi

I have an add-in that presents the user with a VB form. The form allows the
user to supply a filter for messages to move to an archive folder. I want to
provide feedback on the progress of the move process via a progress bar. Can
I safely use a backgroundworker to farm off the move process and update the
progress bar using the backgroundworker's reportprogress method.

Basically, is moving items safe when executed from a backgroundworker ?

Cheers


Dmitry Streblechenko September 18th 08 10:12 PM

Multithreading
 
No, you need to marshal the OOM interfaces to the main Outlook thread.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
"Stuart Parker" wrote in message
...
Hi

I have an add-in that presents the user with a VB form. The form allows
the user to supply a filter for messages to move to an archive folder. I
want to provide feedback on the progress of the move process via a
progress bar. Can I safely use a backgroundworker to farm off the move
process and update the progress bar using the backgroundworker's
reportprogress method.

Basically, is moving items safe when executed from a backgroundworker ?

Cheers




Ken Slovak - [MVP - Outlook] September 18th 08 10:50 PM

Multithreading
 
The Outlook object model should only be accessed from the main thread, never
from any other thread. If you get all the data from Outlook that you need on
the main thread and store it in non-Outlook objects then you can use those
objects in another thread. Otherwise expect crashes and hangs in Outlook.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"Stuart Parker" wrote in message
...
Hi

I have an add-in that presents the user with a VB form. The form allows
the user to supply a filter for messages to move to an archive folder. I
want to provide feedback on the progress of the move process via a
progress bar. Can I safely use a backgroundworker to farm off the move
process and update the progress bar using the backgroundworker's
reportprogress method.

Basically, is moving items safe when executed from a backgroundworker ?

Cheers



Stuart Parker September 18th 08 11:01 PM

Multithreading
 
OK that wouldn't help me as I need to move the items to another folder AND
have a responsive UI which shows progress, which would mean my move process
would have to run on another thread to not hang the UI

I wonder how others do it.

"Ken Slovak - [MVP - Outlook]" wrote in message
...
The Outlook object model should only be accessed from the main thread,
never from any other thread. If you get all the data from Outlook that you
need on the main thread and store it in non-Outlook objects then you can
use those objects in another thread. Otherwise expect crashes and hangs in
Outlook.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"Stuart Parker" wrote in message
...
Hi

I have an add-in that presents the user with a VB form. The form allows
the user to supply a filter for messages to move to an archive folder. I
want to provide feedback on the progress of the move process via a
progress bar. Can I safely use a backgroundworker to farm off the move
process and update the progress bar using the backgroundworker's
reportprogress method.

Basically, is moving items safe when executed from a backgroundworker ?

Cheers



Stuart Parker September 19th 08 05:58 PM

Multithreading
 
Thanks.

So are per my reply to Ken, how do I display a form to show progress
information of items being moved to another folder, and ensure that progress
is updated, if I cannot run the move process on another thread?

If I run the move process on the same thread as the form, the form will
become unresponsive

I'm using VB 2008

"Dmitry Streblechenko" wrote in message
...
No, you need to marshal the OOM interfaces to the main Outlook thread.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
"Stuart Parker" wrote in message
...
Hi

I have an add-in that presents the user with a VB form. The form allows
the user to supply a filter for messages to move to an archive folder. I
want to provide feedback on the progress of the move process via a
progress bar. Can I safely use a backgroundworker to farm off the move
process and update the progress bar using the backgroundworker's
reportprogress method.

Basically, is moving items safe when executed from a backgroundworker ?

Cheers




Dmitry Streblechenko September 19th 08 06:23 PM

Multithreading
 
You can update the UI and run the message pump (DoEvents) after moving each
message.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
"Stuart Parker" wrote in message
...
Thanks.

So are per my reply to Ken, how do I display a form to show progress
information of items being moved to another folder, and ensure that
progress is updated, if I cannot run the move process on another thread?

If I run the move process on the same thread as the form, the form will
become unresponsive

I'm using VB 2008

"Dmitry Streblechenko" wrote in message
...
No, you need to marshal the OOM interfaces to the main Outlook thread.

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
"Stuart Parker" wrote in message
...
Hi

I have an add-in that presents the user with a VB form. The form allows
the user to supply a filter for messages to move to an archive folder. I
want to provide feedback on the progress of the move process via a
progress bar. Can I safely use a backgroundworker to farm off the move
process and update the progress bar using the backgroundworker's
reportprogress method.

Basically, is moving items safe when executed from a backgroundworker ?

Cheers







All times are GMT +1. The time now is 12:26 PM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com