Lesen von Zellwerten in mehreren Threads gleichzeitig.

Contents
[ ]

Um Zellwerte in mehreren Threads gleichzeitig zu lesen, setzen Sie Cells.setMultiThreadReading(boolean) auf true. Andernfalls könnten Sie falsche Zellwerte erhalten.

Der folgende Code:

  1. Erstellt ein Arbeitsblatt.
  2. Fügt ein Arbeitsblatt hinzu.
  3. Befüllt das Arbeitsblatt mit Zeichenfolgen.
  4. Es erstellt dann zwei Threads, die gleichzeitig Werte aus zufälligen Zellen lesen. Wenn die gelesenen Werte korrekt sind, passiert nichts. Wenn die gelesenen Werte inkorrekt sind, wird eine Meldung angezeigt.

Wenn Sie diese Zeile kommentieren:

testWorkbook.getWorksheets().get(0).getCells().setMultiThreadReading(true);

dann wird die folgende Nachricht angezeigt:

if (s !== "R" + row + "C" + col)
{
    console.log("This message box will show up when cells read values are incorrect.");
}

Ansonsten läuft das Programm ohne Anzeige einer Meldung, was bedeutet, dass alle Werte, die aus den Zellen gelesen wurden, korrekt sind.

const path = require("path");
const AsposeCells = require("aspose.cells.node");
const dataDir = path.join(__dirname, "data");
let testWorkbook;
const threadLoop = () => {
const random = Math.random;
while (true) {
try {
const row = Math.floor(random() * 10000);
const col = Math.floor(random() * 100);
const s = testWorkbook.getWorksheets().get(0).getCells().get(row, col).getStringValue();
if (s !== "R" + row + "C" + col) {
console.log("This message will show up when cells read values are incorrect.");
}
} catch (e) {}
}
};
const testMultiThreadingRead = () => {
testWorkbook = new AsposeCells.Workbook();
testWorkbook.getWorksheets().clear();
testWorkbook.getWorksheets().add("Sheet1");
for (let row = 0; row < 10000; row++)
for (let col = 0; col < 100; col++)
testWorkbook.getWorksheets().get(0).getCells().get(row, col).setValue("R" + row + "C" + col);
// Uncommenting this line will enable multi-threaded reading
//testWorkbook.getWorksheets().get(0).getCells().setMultiThreadReading(true);
const myThread1 = setInterval(threadLoop, 0);
const myThread2 = setInterval(threadLoop, 0);
setTimeout(() => {
clearInterval(myThread1);
clearInterval(myThread2);
}, 5 * 1000);
};
testMultiThreadingRead();