Laden...

new Device Problem

Erstellt von mzirl vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.303 Views
M
mzirl Themenstarter:in
1 Beiträge seit 2005
vor 19 Jahren
new Device Problem

Halli hallöchen 🙂

Ich hab mal eine Frage. Und zwar habe ich gerade damit begonnen, mich mit C# und DirectX ein wenig auseinanderzusetzen.
Ich hab da auch ein paar Tutoriale gefunden, und bin mit dem hier doch sehr zufrieden. Jetzt gibts da nur ein Problem ... das "new device". Und zwar bekomm ich da immer einen Fehler:

An unhandled exception of type 'System.ObjectDisposedException' occurred in system.windows.forms.dll

Additional information: Cannot access a disposed object named "example".

Ich hab euch hier mal den Code reingeschrieben, vielleicht sehr ihr ja da was.

using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

public class example : Form
{
	Device device = null;

	static void Main() 
	{
		example form = new example();
		form.InitializeGraphics();
		form.Show();
		while (form.Created)
		{
			form.Render();
			Application.DoEvents(); //Let the OS handle what it needs to
		}
	}

	public void InitializeGraphics()
	{
		try
		{
			PresentParameters presentParams = new PresentParameters();
			presentParams.Windowed=true;
			presentParams.SwapEffect = SwapEffect.Discard;
			device = new Device(0, 
				DeviceType.Hardware, 
				this,
				CreateFlags.HardwareVertexProcessing,
				presentParams);
		}
		catch (DirectXException e)
		{ 
    
			MessageBox.Show(null, 
				"Error intializing graphics: " 
				+  e.Message, "Error"); 
				Close();
		}
	}


	private void Render()
	{
		if (device == null) 
			return;
		device.Clear(ClearFlags.Target, 
			System.Drawing.Color.Blue, 
			1.0f, 0);
		device.Present();
	}
 
}

Ich habe schon herausgefunden, dass es an der "new device" Sache liegt. Wenn man das nämlich einfach per "//" rausnimmt, funktioniert es.

Ich hab auch schon probiert, den Hardware Teil durch Software oder Reference oder MixedVertexProcessing zu ersetzten, gibt immer denselben Fehler.

Hier mal ein paar nähere Angaben zu meinem System:
AMD Athlon XP 2400+
1024 MB RAM
ATI Radeon X800 Pro
Microsoft Visual Studio .NET 2002
DirectX 9.0 SDK Update - (Oktober 2004)

Ich bin mit meinem Latein langsam wirklich am Ende. 🙁 Hab hier im Forum schonmal nach ähnlichen Problemen gesucht und auch was gefunden, aber damit wurde mein Problem auch nicht gelöst.

Ich wäre euch über jegliche Hilfe SEHR SEHR dankbar. 🙂

Michael

P
939 Beiträge seit 2003
vor 19 Jahren

An welcher Code-Position genau tritt der Fehler auf (Stack-Trace)? System.ObjectDisposedException deutet eher darauf hin, dass ein Objekt angesprochen wird, das bereits "disposed" ist. Sollte nicht auftreten, wenn ein Objekt mit new erzeugt wird. Es sei denn, einer der Constructor-Parameter ist "disposed".

Gruss
Pulpapex

PS: "disposed" bedeutet soviel wie: vom Garbage Collector noch nicht freigegeben, aber nativ unbrauchbar.