Мне нужно обновить C # WinForms PictureBox из ввода MemoryStream.Я смог сделать это, используя
pictureBox.Image = new Bitmap(new MemoryStream(payload));
в потоке, который анализирует поток [RxThread()
], но посоветовал использовать делегат , чтобы избежать нежелательных эффектов.Итак, я реализовал это:
private void RxThread()
{
...
var imageDelegateClass = new ImageDelegateClass();
var imageDelegate = new ImageDelegate(imageDelegateClass.SetImage);
imageDelegate(payload);
...
}
delegate void ImageDelegate(byte[] payload);
class ImageDelegateClass
{
public void SetImage(byte[] payload)
{
pictureBox.Image = new Bitmap(new MemoryStream(payload));
}
}
, но при попытке компиляции получить следующий код ошибки:
Невозможно получить доступ к нестатическому члену внешнего типа 'FormMain'через вложенный тип 'FormMain.ImageDelegateClass'
Я уверен, что делать PictureBox статическим, так как он генерируется WinForms, плохая идея.Я знаю, что ремонт, вероятно, прост, но я немного новичок в C #.Я прочитал главу о делегатах в Jon Skeets C # In Depth 2nd Edition несколько раз, но я впервые попробовал ее использовать.Как я могу изменить SetImage()
, чтобы он мог получить доступ к pictureBox?