Bonjour,
je travaille actuellement sur une winform qui récupère à l'aide d'un webbrowser une page html dans laquelle je simule un click sur un bouton.
Cependant je dois tester des centaines de connexions simultanées sur la même page je souhaite donc passer par des threads.
C'est a ce moment la qu'apparait mon probleme:
en effet a un moment je me retrouve avec l'erreur Accès refusé. (Exception de HRESULT : 0x80070005 (E_ACCESSDENIED)).
Voici mon code:
la fonction .loadAndWaitCompleted permet d'attendre que la page soit généré complétement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 private void button1_Click(object sender, EventArgs e) { int n = int.Parse(textBox2.Text); int iStart=Environment.TickCount; //ThreadPool.SetMaxThreads(10, 9000); //for (int i = 0; i < n; i++) //{ // ThreadPool.QueueUserWorkItem(new WaitCallback(launch)); //} Thread[] array1 = new Thread[n]; //for(int i=0; i<n;i++)array1[i]=new Thread(new ThreadStart(launch)); try { //n--; for (int i = 0; i < n; i++) { Thread.Sleep(300); this.loadAndWaitCompleted(textBox1.Text); // array1[i].Start(); ThreadPool.QueueUserWorkItem(new WaitCallback(launch)); } } catch (Exception ex) { MessageBox.Show("Parametre error !!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } for (int i = 0; i < n; i++) array1[i].Abort(); int iTempsEffectue = Environment.TickCount - iStart; label4.Text = iTempsEffectue.ToString(); } private void launch() { Thread.Sleep(100); this._htmlDocument.All["qst448"].SetAttribute("value", "myvalue"); this._htmlDocument.All["btnNext"].InvokeMember("Click"); }
Merci d'avance.
Neofenix
Partager