- Home /
Thread problem,about Abort()
Can anybody help me? The deadline of my project is approaching, but this problem stuck me. my ultimate task is to use the serialport in c#.Now I'm trying to create a thread that continuously read the serial port. Actually I'm now just at the beginning, trying to test if a loop in a thread can work. Here's my problem:If I do not explicitly Abort() the thread before I click the arrow to end the program, the thread may seem unable to be closed. The fact is, I could not run the program again unless I restart Unity3d.` the test code is here: using UnityEngine; using System.Collections; using System; using System.IO; using System.IO.Ports; using System.Threading;
public class TestThread2 : MonoBehaviour {
//variables
public int str;
public int str2;
Boolean Run=true;
Thread t;
float ThreadCount;
// Use this for initialization
void Start () {
t = new Thread(new ThreadStart(ThreadProc));
t.Start();
str=0;
ThreadCount=10;
}
// Update is called once per frame
void Update () {
ThreadCount -= Time.deltaTime;
if(ThreadCount<=0){
t.Abort();
Run=false;
}
}
//线程函数
public void ThreadProc() {
str=0;
Run=true;
while(Run){
}
}
}
I used a ThreadCount so the thread will Abort after a certain time. But if i exit the program before that span of time, the problem will appear.
Answer by coAdjoint · Mar 30, 2013 at 10:34 AM
From my personal experience, stay clear of threaded while loops in unity. I had exactly the same problem as you when I tried to maintain a dedicated worker thread.
My advice (if this is still relevant) is to create a threaded queue and use the threadpool. I've had very good results using this method.
Your answer