以下C#例程可启动/停止/重新启动不同线程上的函数:
所以,我希望有一个在不同线程上永久运行的函数,并且我想能够在不同线程上启动、停止和/或重新启动它。什么是与Android Studio Java的这个例程完全等效的东西?
我尝试下面的代码,认为它会做相当的工作。但我遇到了错误:
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
var CancelationToken = new CancellationTokenSource(); // declare and initialize a token for the cancelaion
while (SomeCondition)
{
CancelationToken = new CancellationTokenSource(); // re initialize if wanted to restart
Task.Run(() = > Process(), CancelationToken.Token); //start a method on another thread
}
CancelationToken.Cancel(); //stop the task
}
public static void Process()
{
while (true) // Keep running forever on the new thread
{ } // some functionality goes here
}
}
}
所以,我希望有一个在不同线程上永久运行的函数,并且我想能够在不同线程上启动、停止和/或重新启动它。什么是与Android Studio Java的这个例程完全等效的东西?
我尝试下面的代码,认为它会做相当的工作。但我遇到了错误:
Class MyTast my either be declared abstract or implement abstract method
为什么这个不起作用?
代码:
public class MainActivity extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button StrtBtn = (Button) findViewById(R.id.StartButton);
Button StpBtn = (Button) findViewById(R.id.StopButton);
// Start Button Click
StrtBtn.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
// I want to start the function on another thread here
}//onClick
}//onClickListener
);//setOnClickListener
// Stop Button Click
StpBtn.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
// I want to stop the function here
}//onClick
}//onClickListener
);//setOnClickListener
public void MyFunction()
{
\\ my function
}
}
public class MyTask extends AsyncTask<String, int, Void>{
protected void doInBackground(){
while(true){
// my code here to call the function here
if(isCancelled()){
break;
}
}
}
}
doInBackground
上标记@Override
标志。 - VMAtm