多线程C#2.0混淆

Mic*_*ann 2 c# multithreading

我试图弄清楚如何多线程应用程序.我很难找到启动线程的入口点.

我尝试启动的主题是:plugin.FireOnCommand(this,newArgs);

...
PluginBase plugin = Plugins.GetPlugin(Commands.GetInternalName(command));
plugin.FireOnCommand(this, newArgs);
...
Run Code Online (Sandbox Code Playgroud)

FireOnCommand方法是:

 public void FireOnCommand(BotShell bot, CommandArgs args)
Run Code Online (Sandbox Code Playgroud)

我没有运气使用ParameterizedThreadStart或ThreadStart,我似乎无法使语法正确.

编辑:试过两个

Thread newThread = 
  new Thread(new ParameterizedThreadStart(plugin.FireOnCommand(this, newArgs))); 
Run Code Online (Sandbox Code Playgroud)

Thread newThread = 
  new Thread(new ThreadStart(plugin.FireOnCommand(this, newArgs)));
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 6

在.NET 2中,您需要使用自定义类型为此创建方法.例如,您可以这样做:

internal class StartPlugin
{
    private BotShell bot;
    private CommandArgs args;
    private PluginBase plugin;

    public StartPlugin(PluginBase plugin, BotShell bot, CommandArgs args)
    {
       this.plugin = plugin;
       this.bot = bot;
       this.args = args;
    }

    public void Start()
    {
        plugin.FireOnCommand(bot, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

StartPlugin starter = new StartPlugin(plugin, this, newArgs);

Thread thread = new Thread(new ThreadStart(starter.Start));
thread.Start();
Run Code Online (Sandbox Code Playgroud)

  • 容易忘记捕获的变量有多么简单.迭代器阻塞更多. (3认同)