по неведомой мне причине 41 ошибка (C#)
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using System.IO;
using static System.Net.Mime.MediaTypeNames;
class NeuralNetworkController : Form
{
private PictureBox pictureBox;
private Button startButton;
private Button stopButton;
private Button trainButton;
private Timer timer;
private Bitmap screenBitmap;
private bool neuralNetworkEnabled;
private List<Bitmap> targetImages;
// Константы для Win32 API
const int SRCCOPY = 0x00CC0020;
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("user32.dll")]
static extern IntPtr GetDesktopWindow();
[DllImport("gdi32.dll")]
static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport("gdi32.dll")]
static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
[DllImport("gdi32.dll")]
static extern IntPtr SelectObject(IntPtr hdc, IntPtr hObject);
[DllImport("gdi32.dll")]
static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
[DllImport("gdi32.dll")]
static extern bool DeleteDC(IntPtr hdc);
public NeuralNetworkController()
{
Text = "Neural Network Object Detection";
Size = new Size(600, 400);
pictureBox = new PictureBox();
pictureBox.Dock = DockStyle.Fill;
Controls.Add(pictureBox);
startButton = new Button();
startButton.Text = "Включить";
startButton.Dock = DockStyle.Bottom;
startButton.Click += StartButton_Click;
Controls.Add(startButton);
stopButton = new Button();
stopButton.Text = "Выключить";
stopButton.Dock = DockStyle.Bottom;
stopButton.Enabled = false;
stopButton.Click += StopButton_Click;
Controls.Add(stopButton);
trainButton = new Button();
trainButton.Text = "Обучить";
trainButton.Dock = DockStyle.Bottom;
trainButton.Click += TrainButton_Click;
Controls.Add(trainButton);
timer = new Timer
timer Interval = 100
timer.Tick += Timer_Tick;
targetImages = LoadTargetImages();
}
private void StartButton_Click(object sender, EventArgs e)
{
startButton.Enabled = false;
stopButton.Enabled = true;
neuralNetworkEnabled = true;
timer.Start();
}
private void StopButton_Click(object sender, EventArgs e)
{
startButton.Enabled = true;
stopButton.Enabled = false;
neuralNetworkEnabled = false;
timer.Stop();
}
private void TrainButton_Click(object sender, EventArgs e)
{
TrainNeuralNetwork(targetImages);
}
private void Timer_Tick(object sender, EventArgs e)
{
screenBitmap = CaptureScreen();
pictureBox.Image = screenBitmap;
if (neuralNetworkEnabled)
{
}
}
private Bitmap CaptureScreen()
{
Rectangle bounds = Screen.PrimaryScreen.Bounds;
IntPtr hdcSrc = GetDC(GetDesktopWindow());
IntPtr hdcDest = CreateCompatibleDC(hdcSrc);
IntPtr hBitmap = CreateCompatibleBitmap(hdcSrc, bounds.Width, bounds.Height);
IntPtr hOld = SelectObject(hdcDest, hBitmap);
BitBlt(hdcDest, 0, 0, bounds.Width, bounds.Height, hdcSrc, 0, 0, SRCCOPY);
Bitmap bitmap = Image.FromHbitmap(hBitmap);
SelectObject(hdcDest, hOld);
DeleteDC(hdcDest);
ReleaseDC(IntPtr.Zero, hdcSrc);
return bitmap;
}
private List<Bitmap> LoadTargetImages()
{
List<Bitmap> images = new List<Bitmap>();
string[] imageFiles = Directory.GetFiles("C:\\mishen", "*.jpg");
foreach (string file in imageFiles)
{
images.Add(new Bitmap(file));
}
return images;
}
private void TrainNeuralNetwork(List<Bitmap> images)
{
}
static void Main()
{
Application.Run(new NeuralNetworkController());
}
}
Ответы (2 шт):
Автор решения: AlexanderSt
→ Ссылка
Начните с того, что проверьте код. Вот тут, например, не хватает пары ;
:
timer = new Timer
timer Interval = 100
мне кажется, подразумевалось:
timer = new Timer();
timer.Interval = 100;
Автор решения: Faraday
→ Ссылка
Как быстрой найти ошибку в коде? Ответ есть - ChatGPT
Вот вырезка по вашему вопросу (Вы думали я его сам буду дебагать?):
Ошибка C# 41, вероятно, связана с неправильным использованием таймера. В вашем коде я вижу опечатку в строке инициализации таймера:
timer = new Timer
timer Interval = 100
timer.Tick += Timer_Tick;
Пропущена точка с запятой после инициализации объекта Timer. Исправьте это, добавив точку с запятой после строки timer = new Timer:
timer = new Timer();
timer.Interval = 100;
timer.Tick += Timer_Tick;
Это должно исправить ошибку и позволить вашему приложению компилироваться без проблем.