Lecture simultanée de valeurs Cell dans plusieurs threads
Contents
[
Hide
]
La nécessité de lire simultanément les valeurs des cellules dans plusieurs threads est une exigence courante. Cet article explique comment utiliser Aspose.Cells à cette fin.
Pour lire les valeurs des cellules dans plusieurs threads simultanément, définissezFeuille de travail.Cells.MultiThreadReading àvrai. Si vous ne le faites pas, vous risquez d’obtenir les mauvaises valeurs de cellule.
Le code suivant :
- Crée un classeur.
- Ajoute une feuille de calcul.
- Remplit la feuille de calcul avec des valeurs de chaîne.
- Il crée ensuite deux threads qui lisent simultanément des valeurs à partir de cellules aléatoires. Si les valeurs lues sont correctes, rien ne se passe. Si les valeurs lues sont incorrectes, alors un message s’affiche.
Si vous commentez cette ligne :
testWorkbook.Worksheets[0].Cells.MultiThreadReading = true;
alors le message suivant s’affiche :
if (s != "R" + row + "C" + col)
{
MessageBox.Show("This message box will show up when cells read values are incorrect.");
}
Sinon, le programme s’exécute sans afficher de message, ce qui signifie que toutes les valeurs lues dans les cellules sont correctes.
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(); | |
} |