Interrompere la conversione o il caricamento utilizzando il monitor di interruzione

Introduzione

Lavorare con file Excel di grandi dimensioni spesso comporta lunghi processi che possono consumare tempo e risorse. Ma cosa succederebbe se potessi interrompere il processo di conversione a metà quando ti rendi conto che qualcosa deve essere cambiato? Aspose.Cells per .NET ha una funzionalità chiamata Interrupt Monitor, che ti consente di interrompere la conversione di una cartella di lavoro in un altro formato come PDF. Questo può essere un salvavita, specialmente quando si lavora con file di dati sostanziali. In questa guida, ti mostreremo come interrompere il processo di conversione utilizzando Interrupt Monitor in Aspose.Cells per .NET.

Prerequisiti

Prima di immergerti, assicurati di avere a disposizione quanto segue:

  1. Aspose.Cells per .NET - ScaricaloQui.
  2. Ambiente di sviluppo .NET, ad esempio Visual Studio.
  3. Conoscenza di base della programmazione C#: la familiarità con la sintassi C# ti aiuterà a seguire il corso.

Importa pacchetti

Per iniziare, importiamo i pacchetti necessari. Queste importazioni includono:

  • Aspose.Cells: la libreria principale per la manipolazione dei file Excel.
  • System.Threading: per la gestione dei thread, poiché in questo esempio verranno eseguiti due processi paralleli.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;

Analizziamo il processo in passaggi dettagliati. Ogni passaggio ti aiuterà a comprendere l’importanza di impostare e utilizzare Interrupt Monitor per gestire la conversione delle cartelle di lavoro di Excel.

Passaggio 1: creare la classe e impostare la directory di output

Per prima cosa, abbiamo bisogno di una classe che incapsuli le nostre funzioni, insieme a una directory in cui verrà salvato il file di output.

class StopConversionOrLoadingUsingInterruptMonitor
{
    static string outputDir = "Your Document Directory";
}

Sostituire"Your Document Directory" con il percorso effettivo in cui desideri salvare il file PDF.

Passaggio 2: istanziare il monitor di interrupt

Successivamente, crea un oggetto InterruptMonitor. Questo monitor aiuterà a controllare il processo impostando la capacità di interromperlo in qualsiasi momento.

InterruptMonitor im = new InterruptMonitor();

Questo monitor di interrupt verrà allegato alla nostra cartella di lavoro, consentendoci di gestire il processo di conversione.

Passaggio 3: impostare la cartella di lavoro per la conversione

Ora creiamo un oggetto cartella di lavoro, assegniamogli InterruptMonitor e poi accediamo al primo foglio di lavoro per inserire del testo di esempio.

void CreateWorkbookAndConvertItToPdfFormat()
{
    Workbook wb = new Workbook();
    wb.InterruptMonitor = im;
    Worksheet ws = wb.Worksheets[0];
    Cell cell = ws.Cells["J1000000"];
    cell.PutValue("This is text.");
}

Il codice sopra crea una cartella di lavoro, imposta InterruptMonitor per essa e inserisce il testo in una cella lontana (J1000000). Posizionando il testo in questa posizione della cella si garantisce che l’elaborazione della cartella di lavoro richieda più tempo, dando a InterruptMonitor tempo sufficiente per intervenire.

Passaggio 4: salvare la cartella di lavoro come PDF e gestire le interruzioni

Ora, proviamo a salvare la cartella di lavoro come PDF. Useremo untry-catch bloccare per gestire eventuali interruzioni.

try
{
    wb.Save(outputDir + "output_InterruptMonitor.pdf");
}
catch (Aspose.Cells.CellsException ex)
{
    Console.WriteLine("Process Interrupted - Message: " + ex.Message);
}

Se il processo viene interrotto, l’eccezione lo catturerà e visualizzerà un messaggio appropriato. Altrimenti, la cartella di lavoro verrà salvata come PDF.

Fase 5: Interrompere il processo di conversione

La caratteristica principale qui è la possibilità di interrompere il processo. Aggiungeremo un ritardo usandoThread.Sleep e poi chiama ilInterrupt() metodo per interrompere la conversione dopo 10 secondi.

void WaitForWhileAndThenInterrupt()
{
    Thread.Sleep(1000 * 10);
    im.Interrupt();
}

Questo ritardo dà alla cartella di lavoro il tempo di iniziare la conversione in PDF prima che venga inviato il segnale di interruzione.

Passaggio 6: eseguire i thread simultaneamente

Per riunire tutto, dobbiamo avviare entrambe le funzioni in thread separati. In questo modo, la conversione della cartella di lavoro e l’attesa dell’interrupt possono avvenire simultaneamente.

public void TestRun()
{
    ThreadStart ts1 = new ThreadStart(this.CreateWorkbookAndConvertItToPdfFormat);
    Thread t1 = new Thread(ts1);
    t1.Start();
    ThreadStart ts2 = new ThreadStart(this.WaitForWhileAndThenInterrupt);
    Thread t2 = new Thread(ts2);
    t2.Start();
    t1.Join();
    t2.Join();
}

Il codice sopra viene eseguitoCreateWorkbookAndConvertItToPdfFormat EWaitForWhileAndThenInterrupt in thread paralleli, unendoli una volta terminati entrambi i processi.

Fase 7: Esecuzione finale

Infine, aggiungeremo unRun() metodo per eseguire il codice.

public static void Run()
{
    new StopConversionOrLoadingUsingInterruptMonitor().TestRun();
    Console.WriteLine("StopConversionOrLoadingUsingInterruptMonitor executed successfully.");
}

QuestoRun il metodo è il punto di ingresso per avviare e osservare l’interruzione dell’azione.

Conclusione

In questo tutorial, abbiamo esplorato come interrompere il processo di conversione in Aspose.Cells per .NET. Interrupt Monitor è uno strumento utile quando si lavora con file Excel di grandi dimensioni, consentendo di interrompere i processi senza attendere che vengano completati. Ciò è particolarmente utile in scenari in cui tempo e risorse sono preziosi ed è necessario un feedback rapido.

Domande frequenti

Che cos’è un Interrupt Monitor in Aspose.Cells per .NET?

Il monitor di interruzione consente di interrompere la conversione di una cartella di lavoro o di caricare un processo a metà.

Posso utilizzare Interrupt Monitor per formati diversi dal PDF?

Sì, puoi interrompere anche le conversioni in altri formati supportati.

In che modo Thread.Sleep() influenza la temporizzazione dell’interruzione?

Thread.Sleep() crea un ritardo prima di attivare l’interruzione, dando il tempo necessario all’avvio della conversione.

Posso interrompere il processo prima di 10 secondi?

Sì, modifica il ritardo inWaitForWhileAndThenInterrupt() a un tempo più breve.

Il processo di interruzione avrà un impatto sulle prestazioni?

L’impatto è minimo ed è estremamente utile per la gestione di processi di lunga durata. Per ulteriori informazioni, fare riferimento alDocumentazione di Aspose.Cells per .NET Se hai bisogno di aiuto, controlla ilForum di supporto ottenere unProva gratuita.