Attività NoPersistScopeNoPersistScope Activity

In questo esempio viene illustrato come modificare uno stato Non-serializable e Disposable all'interno di un flusso di lavoro.This sample shows how to manipulate a non-serializable and disposable state within a workflow. È importante che i flussi di lavoro non tentino di rendere persistente lo stato Non-serializable e che venga eseguita la pulizia degli oggetti eliminabili dopo essere stati usati nel flusso di lavoro.It is important that workflows do not attempt to persist non-serializable state and it is also important for disposable objects to be cleaned up after they are used in workflow.

DimostrazioneDemonstrates

Attività personalizzata NoPersistScope e finestra di progettazione.NoPersistScope custom activity and designer.

Utilizzo dell'attività NoPersistZoneUsing the NoPersistZone activity

Quando viene eseguito il flusso di lavoro di esempio, un'attività personalizzata denominata CreateTextWriter crea un oggetto di tipo TextWriter e lo salva in una variabile del flusso di lavoro.When the sample workflow runs, a custom activity called CreateTextWriter creates an object of type TextWriter and saves it into a workflow variable. TextWriter è un oggetto IDisposable.TextWriter is an IDisposable object. Questo oggetto TextWriter, configurato per scrivere in un file denominato 'out.txt' nella directory in cui viene eseguito l'esempio, viene usato da un'attività WriteLine poiché restituisce qualsiasi testo digitato nella console.This TextWriter, which is configured to write to a file named ‘out.txt’ in the directory in which the sample runs, is used by a WriteLine activity as it echoes any text you type in at the console.

La logica echo viene eseguita all'interno di un'attività NoPersistScope (il cui codice fa anche parte di questo esempio) che evita la persistenza del flusso di lavoro.The echo logic runs within a NoPersistScope activity (the code for which is also part of this sample), which prevents the workflow from being persisted. Se si digita unload nella console, l'host tenta di rendere persistente l'istanza del flusso di lavoro, ma questa operazione scade poiché il flusso di lavoro rimane all'interno di un NoPersistScope.If you type in unload at the console, the host attempts to persist the workflow instance but this operation times out because the workflow remains within a NoPersistScope. Il flusso di lavoro usa anche un'attività personalizzata denominata Dispose per eliminare l'oggetto TextWriter quando il flusso di lavoro viene completato utilizzandolo.The workflow also utilizes a custom activity called Dispose to dispose the TextWriter object when the workflow is finished using it. L'attività Dispose viene posizionata all'interno del blocco Finally dell'attività TryCatch in cui viene dichiarata la variabile TextWriter, per assicurarsi che venga eseguita anche se si dovesse verificare un'eccezione durante l'esecuzione del blocco Try.The Dispose activity is placed within the Finally block of the TryCatch activity in which the TextWriter variable is declared, to ensure that it runs even if an exception should occur during execution of the Try block.

È possibile digitare exit per completare l'istanza del flusso di lavoro e uscire dal programma.You can type in exit to complete the workflow instance and exit the program.

Per eseguire l'esempioTo run the sample

  1. Aprire la soluzione NoPersistZone.sln in Visual Studio 2010Visual Studio 2010.Open the NoPersistZone.sln solution in Visual Studio 2010Visual Studio 2010.

  2. Per compilare la soluzione, premere CTRL + MAIUSC + B o scegliere Compila soluzione dal compilare menu.To build the solution, press CTRL+SHIFT+B or select Build Solution from the Build menu.

  3. Una volta completata la compilazione, premere F5 o scegliere Avvia debug dal Debug menu in alternativa, è possibile premere CTRL + F5 o selezionare Avvia senza eseguire debug dal Debug menu per l'esecuzione senza debug.Once the build has succeeded, press F5 or select Start Debugging from the Debug menu alternatively, you can press CTRL+F5 or select Start Without Debugging from the Debug menu to run without debugging.

Per eseguire la pulizia (facoltativo)To cleanup (optional)

  1. Per rimuovere l'archivio di istanze SQL, eseguire Cleanup.cmd.To remove the SQL Instance Store, run Cleanup.cmd.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\NoPersistScope