c# - 如何在与主窗体类不同的类中执行特定于函数的方法? (C#)

标签 c# class function forms methods

可能是我对多态性或接口(interface)继承等一些关键编程概念缺乏认识。这应该很容易。我是新手。

我在 C# 程序中有一个名为 tts 的单独类。现在我在其中定义了一个函数,叫做 speak。这是它:

class tts

{ 

     public void speak() 
     {

        Process process1 = new Process();
        process1.StartInfo.FileName = "C:\\Program Files\\eSpeak\\command_line\\espeak.exe";
        process1.StartInfo.Arguments = "hello";

        process1.StartInfo.UseShellExecute = false;
        process1.StartInfo.CreateNoWindow = true;

        process1.Start();
        //process1.Kill();
    }
}

当我在事件 (listBox1_SelectedIndexChange) 下从主窗体调用此函数时,它运行良好。每当我滚动列表框时,这个程序都会读“你好”。但是当我滚动到列表框中的下一项时,我想终止 process1。当我在 speak 函数中实现 process1.Kill()(通过取消注释 kill 方法)时,程序不会读取“hello”。发生的事情是 process1 立即被杀死。所以我不会在 speak 函数下实现方法 Kill() 。但是当我更改列表框的索引 (listBox1_SelectedIndexChange) 时,我想从主窗体中终止 process1。这是我的主要表单代码。

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        tts obj = new tts();
        obj.speak();
    }

我想做的是:

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        tts obj = new tts();
        obj.speak();
        process1.Kill();
    }

这当然是行不通的,因为 process1 在 tts 类中的函数 speak 范围内。如何从主窗体执行 process1.Kill()

我更喜欢基本代码本身,而不是关于要做什么的技术术语。

最佳答案

你可以做的一件事是创建单独的类来管理进程

下面是示例代码:

class processmanagement
{
  Process p;

  public Process startprocess()
  {
    p = new Process();
  }

  public void killprocess(Process p1)
  {
    p = p1;
    if(p!=null)
      p.kill();
  }
}

class processmanagement
{
  Process p;

  public void startprocess()
  {
    p = new Process();
  }

  public void killprocess()
  {
    if(p!=null)
      p.kill();
  }
}

关于c# - 如何在与主窗体类不同的类中执行特定于函数的方法? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322085/

相关文章:

c# - 如何将 DataTrigger 值设置为常量字段?

c# - 如何在 C# 中添加两个具有负号的时间跨度值?

C++:跨类结构

java - 在 Java 类 DecimalFormat 中,小数点左侧的主题标签有什么作用?

python - 将函数的打印输出转换为列表

function - 在 Dlang 中传递函数指针

c# - 方法本地 .NET 对象何时符合 GC 条件?

c# - 无法确定条件表达式的类型 (Func)

c++ - 父类方法中不兼容的 cv 限定符

php - 邮件功能的主题问题 - PHP