Lectura de valores Cell en múltiples subprocesos simultáneamente

Contents
[ ]

Para leer valores de celda en más de un subproceso simultáneamente, configureWorksheet.Cells.MultiThreadReading averdadero. Si no lo hace, es posible que obtenga valores de celda incorrectos.

El siguiente código:

  1. Crea un libro de trabajo.
  2. Agrega una hoja de trabajo.
  3. Llena la hoja de cálculo con valores de cadena.
  4. Luego crea dos subprocesos que leen simultáneamente valores de celdas aleatorias. Si los valores leídos son correctos, no pasa nada. Si los valores leídos son incorrectos, se muestra un mensaje.

Si comentas esta línea:

 testWorkbook.Worksheets[0].Cells.MultiThreadReading = true;

luego se muestra el siguiente mensaje:

 if (s != "R" + row + "C" + col)

{

    MessageBox.Show("This message box will show up when cells read values are incorrect.");

}

De lo contrario, el programa se ejecuta sin mostrar ningún mensaje, lo que significa que todos los valores leídos de las celdas son correctos.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
public static void Main()
{
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
public static Workbook testWorkbook;
public static void ThreadLoop()
{
Random random = new Random();
while (Thread.CurrentThread.IsAlive)
{
try
{
int row = random.Next(0, 10000);
int col = random.Next(0, 100);
string s = testWorkbook.Worksheets[0].Cells[row, col].StringValue;
if (s != "R" + row + "C" + col)
{
Console.WriteLine("This message will show up when cells read values are incorrect.");
}
}
catch { }
}
}
public static void TestMultiThreadingRead()
{
testWorkbook = new Workbook();
testWorkbook.Worksheets.Clear();
testWorkbook.Worksheets.Add("Sheet1");
for (var row = 0; row < 10000; row++)
for (var col = 0; col < 100; col++)
testWorkbook.Worksheets[0].Cells[row, col].Value = "R" + row + "C" + col;
// Commenting this line will show a pop-up message
// testWorkbook.Worksheets[0].Cells.MultiThreadReading = true;
Thread myThread1;
myThread1 = new Thread(new ThreadStart(ThreadLoop));
myThread1.Start();
Thread myThread2;
myThread2 = new Thread(new ThreadStart(ThreadLoop));
myThread2.Start();
System.Threading.Thread.Sleep(5 * 1000);
myThread1.Abort();
myThread2.Abort();
}