C# AccsessViolationException wurde nicht behandelt.

Eragon333

Lt. Junior Grade
Registriert
Juni 2012
Beiträge
362
Hallo!

Ich habe ein Problem und zwar stürzt mein Browser immer wieder ab, mit der oben beschriebenen Fehlermeldung?!

Dazu steht noch: Es wurde versucht im geschützten Speicher zu lesen oder zu schreiben.
Zuvor kam das nie aber jetzt auf einmal:freak:

Ich habe schon versucht try und catch aber ohne Erfolg.

Würde es helfen den ganzen Code in ein neues Projekt zu kopieren? Habe auch verschiedene Zielframeworks probiert, klappt aber trotzdem nicht :/

mfg
 
Hi,

Ich habe ein Problem und zwar stürzt mein Browser immer wieder ab

Und wie sollen wir dir mit dieser Aussage helfen ohne auch nur eine Zeile Code zu kennen? Es liest sich so als hättest du dir selbst einen Browser geschrieben - ist das so korrekt?

VG,
Mad
 
Ja das nehme ich an, mit Hilfe eben.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
using System.Diagnostics;
using System.IO;








namespace Brunzilla
{
public partial class Form1 : Form






{
int licznik = 0;
Stopwatch sw = new Stopwatch();
public Form1()


{

InitializeComponent();


Skybound.Gecko.Xpcom.Initialize(Application.StartupPath + @"\xulrunner\");


this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);


Rectangle resolution = Screen.PrimaryScreen.Bounds;










}


public void Form1_Load(object sender, EventArgs e)
{





label2.Visible = false;
label3.Visible = false;
label1.Visible = true;
label4.Visible = false;
prg.Visible = false;
geckoWebBrowser1.Navigate("http://www.google.de");
}







private void geckoWebBrowser1_Navigating(object sender, Skybound.Gecko.GeckoNavigatingEventArgs e)
{


var thread = new Thread(() =>
{
CheckURl(e.Uri.ToString());
});
thread.Start();



}
private void CheckURl(string url)

{


if (string.IsNullOrEmpty(url))
return;
if (url.ToLower().StartsWith("https://www.facebook.com/ajax".ToLower()))
return;

try
{

var request = HttpWebRequest.Create(url);
request.Method = "HEAD";


using (var response = request.GetResponse())
{
var headerValues = response.Headers.GetValues("Content-Type");
if (headerValues != null && headerValues.Length > 0)
{
var ContentType = headerValues[0];
if (ContentType.StartsWith("application"))
{
this.Invoke(new Action(() =>
{
var dialog = new SaveFileDialog();
dialog.DefaultExt = "exe";



if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{


sw.Start();
var Client = new WebClient();


Client.DownloadFileCompleted += new AsyncCompletedEventHandler(Client_DownloadFileCompleted);


Client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Client_DownloadProgressChanged);
Client.DownloadFileAsync(new Uri(url), dialog.FileName);
prg.Visible = true;
label1.Visible = false;
label2.Visible = true;
label3.Visible = true;
label4.Visible = true;














}




}));


}


}


}
}
catch
{



}
}








void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{





this.Invoke(new Action(() =>
{
MessageBox.Show("Download abgeschlossen");
prg.Value = 0;
label1.Visible = true;
label2.Visible = false;
label3.Visible = false;
label4.Visible = false;
label4.Text = "";


}));
}









void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{


// The stopwatch which we will be using to calculate the download speed










try
{










this.Invoke(new Action(() =>
{
prg.Value = e.ProgressPercentage;


}));


if (label3.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0"))


label4.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " kb/s";








if (label3.Text != e.ProgressPercentage.ToString() + "%")
label3.Text = e.ProgressPercentage.ToString() + "%";


label2.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " Mb's" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " Mb's";


}
catch

{
}












}
















private void button5_Click(object sender, EventArgs e)
{
geckoWebBrowser1.Navigate("http://www.google.de");
}


private void button10_Click(object sender, EventArgs e)
{
try
{


geckoWebBrowser1.Navigate("http://www.Facebook.de");


if (licznik == 0)
{
geckoWebBrowser1.Focus();


}
}
catch
{
}
}


private void button8_Click(object sender, EventArgs e)
{


}


private void button7_Click(object sender, EventArgs e)
{

geckoWebBrowser1.Navigate("http://www.Youtube.de");
if (licznik == 0)
{
geckoWebBrowser1.Focus();


}
}





private void button9_Click(object sender, EventArgs e)
{

geckoWebBrowser1.Navigate("https://www.google.de/#q=" + textBox2.Text);
if (licznik == 0)
{
geckoWebBrowser1.Focus();


}
}


private void textBox2_TextChanged(object sender, EventArgs e)
{


}


private void button2_Click(object sender, EventArgs e)
{

geckoWebBrowser1.GoBack();
if (licznik == 0)
{
geckoWebBrowser1.Focus();


}
}


private void textBox1_TextChanged(object sender, EventArgs e)
{


}


private void button1_Click(object sender, EventArgs e)
{


geckoWebBrowser1.Navigate(textBox1.Text);




if (licznik == 0)
{
geckoWebBrowser1.Focus();
}
}






private void button4_Click(object sender, EventArgs e)
{
int licznik = 0;
geckoWebBrowser1.GoForward();
if (licznik == 0)
{
geckoWebBrowser1.Focus();


}
}


private void button3_Click(object sender, EventArgs e)
{
geckoWebBrowser1.Reload();

}


private void geckoWebBrowser1_Navigated(object sender, Skybound.Gecko.GeckoNavigatedEventArgs e)
{
textBox1.Text = geckoWebBrowser1.Url.ToString();
}


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{

if (e.KeyChar == '\r')
{
e.Handled = true;
geckoWebBrowser1.Navigate(textBox1.Text);


if (licznik == 0)
{
geckoWebBrowser1.Focus();
}


}


}


private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{



if (e.KeyChar == '\r')
{
e.Handled = true;
geckoWebBrowser1.Navigate("https://www.google.de/#q=" + textBox2.Text);


if (licznik == 0)
{
geckoWebBrowser1.Focus();


}
}
}


private void geckoWebBrowser1_ProgressChanged(object sender, Skybound.Gecko.GeckoProgressEventArgs e)
{


try
{
progressBar1.Value = Convert.ToInt32(e.CurrentProgress);
progressBar1.Maximum = Convert.ToInt32(e.MaximumProgress);
}
catch
{
}




}





private void button8_Click_1(object sender, EventArgs e)
{
prg.Visible = !prg.Visible;
label3.Visible=! label3.Visible;
label2.Visible =!label2.Visible;
label4.Visible = !label4.Visible;














}





private void button6_Click_3(object sender, EventArgs e)
{
AboutBox1 aboutDlG = new AboutBox1();
aboutDlG.ShowDialog();
}


private void geckoWebBrowser1_Click(object sender, EventArgs e)
{


}





}
}
 
Is es so schwer das mal vernüftig formatiert in
Code:
Code-Blöcken
einzustellen?!
 
AccsessViolationException ... Speicherschutzverletzung ... huch, so was kann man in C# auch hinbekommen? :D Ich dachte, das ginge nur in C-ähnlichen Sprachen (oder assembler, etc.).
 
Man kann von C# aus auch C++-Bibliotheken verwenden, von daher kann der Fehler auch irgendwo aus der Richtung kommen. Gecko selbst (worauf das hier offenbar basiert) ist ja wohl kaum in C# geschrieben.

Aber so wie der Code formatiert ist (oder nicht formatiert ist) bin ich jetzt auch nicht motiviert, mich da durch zu wühlen.
 
Hö Codeblöcke?!

Ich habe einfach drauflos geschrieben und es hat auch funktionoert :/

Auch geckoFX funzt eigentlich supper:(
 
Eragon333 schrieb:
Hö Codeblöcke?!

@Codeblöcke:

Damit ist gemeint dass du hier im Forum, deinen geposteten Code in [*CODE][*/CODE] (ohne die *) verschachteln sollst, damit aus dem hier:

if (true)
{
//dosomething
}

das hier wird

Code:
if (true)
{
 //do something
}

Ist für alle Beteiligten besser zu lesen.
 
Danke ich werde es mir merken!



Ich habe nun ein neues Projekt erstellt, und einen Teil des Codes dort verwendet, aber das Problem ist das selbe. Ich weis einfach nicht woran es liegt := 0 Es wird kein Fehler angezeigt :(

mfg
 
Ohne mich jetzt näher mit dem Code zu befassen, könntest du folgendes machen:
1. Im Visual Studio unter Debuggen / Ausnahmen... das Häckchen für "Ausgelöst" bei Common Language Runtime Exceptions setzen
2. Deinen Browser im Debugmodus starten
3. Alle notwendigen Aktionen machen um den Fehler zu provozieren
-> Visual Studio sollte dann bei der entsprechenden Code-Zeile unterbrechen und du hättest mal schon einen Ansatzpunkt wo der Fehler auftritt

Viel Erfolg
Rossibaer
 
Hi,

Ich habe nun ein neues Projekt erstellt, und einen Teil des Codes dort verwendet, aber das Problem ist das selbe. Ich weis einfach nicht woran es liegt

Dann mach das was man als Entwickler macht wenn man nicht weiß wo der Fehler liegt: setze Break-Points und gehe Schritt für Schritt durch den code, bis dir die Exception um die Ohren fliegt.

VG,
Mad
 
Rossibaer schrieb:
1. Im Visual Studio unter Debuggen / Ausnahmen... das Häckchen für "Ausgelöst" bei Common Language Runtime Exceptions setzen

Ich vermute auch, dass das auch dem C Bereich kommt, deswegen sollte der Haken bei ausgelöst eher bei Nativ stehen oder wie das heisst. Im StackTrace sollte man dann den Übergang von Managed zu Unmaged sehen, aber ob das dann weiterhilft..?!
 
Zurück
Oben