Läs cellvärden i flera trådar samtidigt

Contents
[ ]

För att läsa cellvärden i mer än en tråd samtidigt, sätt Cells.setMultiThreadReading(boolean) till true. Om du inte gör det kan du få felaktiga cellvärden.

Följande kod:

  1. Skapar en arbetsbok.
  2. Lägger till en arbetsblad.
  3. Fyller arbetsbladet med strängvärden.
  4. Skapar sedan två trådar som samtidigt läser värden från slumpmässiga celler. Om de lästa värdena är korrekta händer ingenting. Om de lästa värdena är inkorrekta visas ett meddelande.

Om du kommenterar denna rad:

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

visas sedan följande meddelande:

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

I annat fall körs programmet utan att visa något meddelande, vilket betyder att alla värden som läses från cellerna är korrekta.

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();