![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
|
![]() |
#1 |
Veteran
![]() Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320
|
![]() S'Gott, wieder mal ein Problem. Und zwar möchte ich eine URL aufrufen können, die dann eine Funktion startet. Diese Funktion soll aber in einem neuen Thread starten, also parallel zum aufrufenden Thread. Bissl umständlich erklärt...
Also ich ruf im Browser die URL http://blabla/eineseite.aspx auf. In der führe ich eine Funktion aus. Der Browser soll aber nicht auf die Erledigung der Funktion warten, sondern die Funktion starten und fertig. Der Rest wird in der Funktion abgearbeitet. So weit so gut. Das hab ich mal in einer dll gespeichert, die ich auf meinen Webhost kopieren will: Code:
using System; using System.Net; using System.Text; using System.Data; using System.IO; using System.Xml; namespace Proxy { public class Data { public string Link = @"http://www.chili-it.at"; public string ProxyFile = @"D:\Downloads\Proxies.txt"; public string LogFile = @"D:\Downloads\Logfile.txt"; public string Logging = @"D:\Downloads\Logging.txt"; } public class Program { public delegate void delegateCrawler(); public void Starter() { delegateCrawler dc = new delegateCrawler(Crawler); AsyncCallback callback = new AsyncCallback(Finisher); IAsyncResult result = dc.BeginInvoke(callback, dc); } public void Finisher(IAsyncResult ar) { Data d = new Data(); StreamWriter sfile = new StreamWriter(d.LogFile, true); sfile.WriteLine("Auftrag ausgeführt am {0}.", DateTime.Now); sfile.Close(); } public void Crawler() { string strLine; Data d = new Data(); StreamReader sr = new StreamReader(d.ProxyFile); StreamWriter sw = new StreamWriter(d.Logging, true); char[] ProxDataSep = { ':' }; while ((strLine = sr.ReadLine()) != null) { string[] ProxData = strLine.Split(ProxDataSep); try { WebRequest WebReq = WebRequest.Create(d.Link); WebProxy WebProx = new WebProxy(ProxData[0], Convert.ToInt32(ProxData[1])); WebReq.Proxy = WebProx; WebReq.Timeout = 5000; // Timeout in ms WebResponse WebResp = WebReq.GetResponse(); } catch (Exception e) { sw.WriteLine(string.Concat(strLine, "\t", e.Message, "\t", DateTime.Now)); continue; } sw.WriteLine(string.Concat(strLine, "\tAnfrage erfolgreich\t", DateTime.Now)); } sr.Close(); sw.Close(); } } } Mit folgendem Code rufe ich die Funktionen auf: Code:
<%@ Page Language="C#" Async="true" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> Auftrag ausgeführt. </div> </form> </body> </html> using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Proxy; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Proxy.Program pp = new Proxy.Program(); pp.Starter(); //pp.Crawler(); } } Hat jemand eine Ahnung an was das liegen kann? Scheiterts vielleicht an irgendwelchen Berechtigungen fürs Framework? Ich kenn mich gar ned aus ![]()
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur. http://www.chili-it.at |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|