Подпрограммы в C # - PullRequest
1 голос
/ 10 июня 2011

Я немного новичок в C # и не совсем уверен, как вызвать подпрограмму.Вот что я пытаюсь сделать:

private void button1_Click(object sender, EventArgs e)
{
    // Call whatever subroutine you like
    StartExstream();
}

public void StartExstream()
{
    // Do Stuff Here
}

К сожалению, для меня это не работает.Я получаю сообщение об ошибке «Только операторы присваивания, вызова, приращения, декремента и нового выражения объекта могут использоваться как оператор».

Как мне вызвать подпрограмму StartExstream из события Button1_Click?

Спасибо, Джейсон

РЕДАКТИРОВАТЬ:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Call whatever subroutine you like
         StartExstream();
    }



    public void StartExstream()
    {
        tcpExstream.Service1Client MyTCP = new tcpExstream.Service1Client();

        string ExStreamPath;
        string datPath;
        string optPath;

        // My Working Arguments
        ExStreamPath = @"C:\Program Files\Exstream\Dialogue 6.1\Engine.exe";
        datPath = @"-FILEMAP=DataFile,\\Dev-srv1\Exstream\LetterWriterApp\Input Files\Data Files\SAVEezkazivaftf40s452ndayb45.dat";
        optPath = @"-CONTROLFILE=C:\Exstream\Development\LetterWriter\ControlFiles\Letter.opt";

        // Hong's Arguments
        //ExStreamPath = @"C:\Program Files\Exstream\Dialogue 6.1\Engine.exe";
        //datPath = @"-FILEMAP=DataFile,C:\Exstream\development\AGDocGenerator\TempFiles\DataFiles\Data_456231_1598.xml";
        //optPath = @"-CONTROLFILE=C:\Exstream\development\AGDocGenerator\ExstreamDialogue\ControlFiles\AGDocGenerator.opt";

        // Kick It!
        MyTCP.StartExStream(datPath, optPath, ExStreamPath);

        // Extra line of code for breaking point
        optPath = "nothing";
    }
}

}

Ответы [ 3 ]

1 голос
/ 10 июня 2011

Первый

Если подпрограмма находится в том же классе, что и там, вы можете напрямую вызвать подпрограмму, просто написав ее имя

Example

private void AnotherMethod()
    {
        // Call whatever subroutine you like
         MyRutine();
    }

Второй

Если это не тот же класс, вам нужно создать экземпляр класса, который содержит подпрограмму, и затем вы можете использовать этот объект для вызова вашей подпрограммы

Example

MyClass c = new MyClass();
c.MyRutine();
1 голос
/ 10 июня 2011

Вы должны иметь все это в пространстве имен, а затем в классе, чтобы это работало.

namespace some.namespace
{
   public class myclass
   {
        private void button1_Click(object sender, EventArgs e)
        {         // Call whatever subroutine you like         
              StartExstream();     
        }
        public void StartExstream()
        {         // Do Stuff Here     
        } 
   }
}
0 голосов
/ 10 июня 2011

ОК, исходя из дальнейшего поста, Ваш код

tcpExstream.Service1Client MyTCP = new tcpExstream.Service1Client();

пытается создать объект типа, который является не типом, а членом типа.

вместо этого вы бы использовали что-то вроде

WhateverTypeTcpExstreamIs MyTCP = new WhateverTypeTcpExstreamIs();
MyTCP.Service1Client = tcpExstream.Service1Client();
...