قراءة قيم الخلية في خيوط متعددة بشكل متزامن
Contents
[
Hide
]
من الضروري قراءة قيم الخلية في خيوط متعددة بشكل متزامن ، وهو متطلب شائع. يشرح هذا المقال كيفية استخدام Aspose.Cells لهذا الغرض.
لقياس قيم الخلايا في أكثر من خيط واحد في نفس الوقت، اضبط Cells.setMultiThreadReading(boolean) على true. إذا لم تفعل ذلك، قد تحصل على قيم خلايا غير صحيحة.
الكود التالي:
- ينشئ دفتر عمل.
- إضافة ورقة عمل.
- ملء ورقة العمل بقيم السلسلة.
- ثم ينشئ خيطين يقرأان قيمًا بشكل متزامن من الخلايا العشوائية. إذا كانت القيم المقروءة صحيحة، لا يحدث شيء. إذا كانت القيم المقروءة غير صحيحة، يتم عرض رسالة.
إذا قمت بتعليق هذا السطر:
testWorkbook.getWorksheets().get(0).getCells().setMultiThreadReading(true);
سيتم عرض الرسالة التالية:
if (s !== "R" + row + "C" + col)
{
console.log("This message box will show up when cells read values are incorrect.");
}
وإلا، يعمل البرنامج بدون عرض أي رسالة مما يعني أن جميع القيم المقروءة من الخلايا صحيحة.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); |