قراءة Cell القيم في خيوط متعددة في نفس الوقت

Contents
[ ]

لقراءة قيم الخلايا في أكثر من مؤشر ترابط واحد في نفس الوقت ، قم بتعيينورقة عمل Cells إلىحقيقي. إذا لم تقم بذلك ، فقد تحصل على قيم خلية خاطئة.

الكود التالي:

  1. يقوم بإنشاء مصنف.
  2. يضيف ورقة عمل.
  3. يملأ ورقة العمل بقيم السلسلة.
  4. ثم يقوم بإنشاء خيطين يقرآن القيم من الخلايا العشوائية في نفس الوقت. إذا كانت القيم المقروءة صحيحة ، فلن يحدث شيء. إذا كانت القيم المقروءة غير صحيحة ، فسيتم عرض رسالة.

إذا قمت بالتعليق على هذا السطر:

 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.");

}

خلاف ذلك ، يتم تشغيل البرنامج دون إظهار أي رسالة مما يعني أن جميع القيم المقروءة من الخلايا صحيحة.

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