我可以为我的Windows Phone应用程序创建一个继承自c#中线程类的类。
例如:
如果我的班级名称是'MyClass',我想将该帖子作为new MyClass().Start();
类似于以下Java示例
public class TagIndexer
{
private static class Task
{
private String docId;
private String tags;
private String extension;
public Task(String docId, String tags, String extension)
{
this.docId = docId;
this.tags = tags;
this.extension = extension;
}
}
private static final LinkedList<Task> queue = new LinkedList<Task>();
private static boolean isWorking = false;
private static class TaskRunner extends Thread
{
@Override
public void run()
{
while (true)
{
Task task;
synchronized (queue)
{
task = queue.poll();
if (null == task)
{
isWorking = false;
break;
}
isWorking = true;
}
/*
* PROCESSING CODE
*/
}
}
}
public static void addDocument(int docId, String tags, String extension)
{
Task task = new Task(Integer.toString(docId), tags, extension);
synchronized (queue)
{
queue.add(task);
if (!isWorking)
{
new TaskRunner().start();
}
}
}
}
答案 0 :(得分:1)
new MyClazz().Start();
-
public abstract class MyThread
{
public abstract void Run();
public void Start()
{
new Thread(Run).Start();
}
}
public class MyClazz : MyThread
{
public override void Run()
{
Console.WriteLine("Hello World");
}
}
答案 1 :(得分:0)
在Windows Phone上,Thread
是一个密封类,因此您无法从中继承。如果要保留基于任务的方法,可以创建一个包装线程实例的类。类似的东西:
public abstract class Task
{
protected Thread InternalThread { get; set; }
protected abstract void Run();
public void Start()
{
this.InternalThread = new Thread(this.Run);
this.InternalThread.Start();
}
}
当然,这只是一个例子。您必须添加一些同步机制,以防止Start
方法在多次调用时创建多个线程。
然后您可以继承它以创建自定义任务:
public class MyTask : Task
{
protected override void Run()
{
// Do something
}
}
答案 2 :(得分:0)
请参阅 MSDN
中有关BackgroundAgent
的文章: