Как передать переменную файлового потока другому методу? - PullRequest
0 голосов
/ 20 июня 2020

Как передать мой файловый поток из openXaml () в timedEvent ()

method1

    private void openXaml()
    {
        FileStream  fs = new FileStream(path, FileMode.Open);       
    }

method 2 (Невозможно добавить перегрузки)

private void timedEvent()
{ 
Grid page = (Grid)XamlReader.Load(fs);
}

I имел переменную файлового потока в методе 2, но я продолжал сталкиваться с проблемами, потому что это рассчитанное по времени событие. Итак, теперь мне нужно выяснить, как передать поток файлов методу 2 из метода 1.

1 Ответ

0 голосов
/ 21 июня 2020

Я предполагаю, что это ваш собственный код, который вызывает эти два метода, вы можете просто вернуть поток файлов из первого метода, сохранить его как переменную в вызывающем коде и передать его как параметр второму методу.

private FileStream openXaml()
{
    return new FileStream(path, FileMode.Open);       
}

private void timedEvent(FileStream stream)
{ 
    Grid page = (Grid)XamlReader.Load(fs);
}

private void Caller() 
{
   var stream = openXaml();
   timedEvent(stream);

   // or
   timedEvent(openXaml);
}

Edit

Такой код будет работать, если:

  • Оба метода принадлежат одному классу.

  • Вы используете тот же объект в процессе.

  • Вы гарантируете, что openXaml вызывается до timedEvent. (Я добавил нулевую проверку на случай)

    public class Example 
    { 
       private FileStream _filestream;
    
       private void openXaml()
       {
          _fileStream = new FileStream(path, FileMode.Open);       
       }
    
       private void timedEvent()
       { 
          if (_fileStream != null) 
          {
             Grid page = (Grid)XamlReader.Load(_fileStream);
          }
       }
    }
    
...