2010-02-09 14 views
1

Maintenant, je suis en train de résoudre la tâche de test de performance du serveur Web et j'ai un petit problème. Il existe un moyen pour communication between DHTML and C# code. Cela fonctionne parfaitement dans l'application Win mais j'ai besoin d'une application console. Je crée donc simple testMise en œuvre de la communication entre le code JavaScript et l'application de console C#

Program.cs


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace CometTest 
{  
    class Program 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      Client c = new Client(@"URL"); 
      Console.ReadLine(); 
      Console.WriteLine(c.ToString()); 

     } 

    } 
} 

Client.cs


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Security.Permissions; 

namespace CometTest 
{ 
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] 
    [System.Runtime.InteropServices.ComVisibleAttribute(true)] 
    public class Client 
    { 
     public WebBrowser browser; 

     public Client(string host) 
     { 
      browser = new WebBrowser(); 
      browser.ObjectForScripting = this; 
      browser.Navigate(host);  
     } 
     public void Notify(String message) 
     { 
      Console.WriteLine(message); 
     } 
    } 
} 

Dans mon code JavaScript j'effectuer window.external.Notify ('test'); ? , mais sans succès :-(

Des suggestions

Répondre

0

Je pense que vous avez à peu près le même proplem que le gars ici: WebBrowser Control - Console Application - Events Not Firing

Peut-être la réponse qu'il a vous aide, aussi les messages. à partir d'une application console ne sont pas déclenchés parce que:

l'exigence de base d'un thread STA est qu'il a besoin de faire fonctionner une pompe de message Dans Windows Forms, vous pouvez utiliser Application.Run Ou vous pourriez écrire la pompe de message.. à la main, en utilisant user32! GetMessa ge & DispatchMessage. Mais il est probablement plus facile d'utiliser celui de WinForms ou WPF.