[Mono-list] about Pinvoke in mono Thread

Jone drjone at gmail.com
Sun Jan 20 03:16:52 EST 2008


Hi,
I have a program need to P/Invoke a Shared Object API from a C# thread in
Mono , but I am always meet the "seg fault" error.
My code like below:
	class MainClass
	{
		private static void ThreadRun()
		{
			XmlConfigurator.Configure(new
FileInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
"Log4Net.config"));
			Console.WriteLine("Hello Test!");
			HDDDriver DD;
			DD=new HDDDriver(100);
			Byte[] TT=new Byte[1880000*6];
			DD.InitOutputPort(0,38000000);
			
			int i=0;
			while(i<1000)
			{
				DD.OutputBuffer(0,TT);
				i++;
			}
			DD.UnloadOutputPort(0);
			Console.WriteLine("End");
		}
		
		static string RL()
		{
			return Console.ReadLine();
		}
		
		static void WL(object aMsg)
		{
			Console.WriteLine(aMsg);
		}
		static void W(object aMsg)
		{
			Console.Write(aMsg);
		}
		public static void Main(string[] args)
		{
		   Thread FThread =new Thread(new ThreadStart(ThreadRun));
		   FThread.Start();
		    String tmpStr = RL();
		            while (tmpStr.ToUpper() != "QUIT")
            {
                tmpStr = RL();
            }
     		FThread.Abort();
		}
	}

But when I changed the code to no thread, the code can run ok,like this:

	class MainClass
	{
		private static void ThreadRun()
		{
			XmlConfigurator.Configure(new
FileInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
"Log4Net.config"));
			Console.WriteLine("Hello Test!");
			HDDDriver DD;
			DD=new HDDDriver(100);
			Byte[] TT=new Byte[1880000*6];
			DD.InitOutputPort(0,38000000);
			
			int i=0;
			while(i<1000)
			{
				DD.OutputBuffer(0,TT);
				i++;
			}
			DD.UnloadOutputPort(0);
			Console.WriteLine("End");
		}
		
		static string RL()
		{
			return Console.ReadLine();
		}
		
		static void WL(object aMsg)
		{
			Console.WriteLine(aMsg);
		}
		static void W(object aMsg)
		{
			Console.Write(aMsg);
		}
		public static void Main(string[] args)
		{
		  ThreadRun();
		}
	}

Would someone could help me ?





More information about the Mono-list mailing list