قراءة Cell القيم في خيوط متعددة في نفس الوقت
Contents
[
Hide
]
تعد الحاجة إلى قراءة قيم الخلايا في خيوط متعددة في وقت واحد مطلبًا شائعًا. تشرح هذه المقالة كيفية استخدام Aspose.Cells لهذا الغرض.
لقراءة قيم الخلايا في أكثر من مؤشر ترابط واحد في نفس الوقت ، قم بتعيينورقة عمل Cells إلىحقيقي. إذا لم تقم بذلك ، فقد تحصل على قيم خلية خاطئة.
الكود التالي:
- يقوم بإنشاء مصنف.
- يضيف ورقة عمل.
- يملأ ورقة العمل بقيم السلسلة.
- ثم يقوم بإنشاء خيطين يقرآن القيم من الخلايا العشوائية في نفس الوقت. إذا كانت القيم المقروءة صحيحة ، فلن يحدث شيء. إذا كانت القيم المقروءة غير صحيحة ، فسيتم عرض رسالة.
إذا قمت بالتعليق على هذا السطر:
testWorkbook.Worksheets[0].Cells.MultiThreadReading = true;
ثم يتم عرض الرسالة التالية:
if (s != "R" + row + "C" + col)
{
MessageBox.Show("This message box will show up when cells read values are incorrect.");
}
خلاف ذلك ، يتم تشغيل البرنامج دون إظهار أي رسالة مما يعني أن جميع القيم المقروءة من الخلايا صحيحة.
This file contains 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
// 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(); | |
} |