Я просмотрел много тем, но не могу понять, как заменить существующие методы делегированием+таймером, поскольку сейчас я использую только таймер. Кроме того, при добавлении BackgroundWorker для работы с btng, который перемещает лифт вниз и открывает двери, я получаю ошибку многопоточного использования, сообщающую, что другой поток пытается вставить данные в .accdb, где записан основной поток. Добавляю код, который не очень длинный, но полностью рабочий. Может ли кто-нибудь подсказать мне, как заменить мои существующие методы делегированием и добавить один или два BackgroundWorker, чтобы помочь кнопкам, которые перемещают лифт и при этом сохранять таймеры, пожалуйста.
< п>П.С. Нужно ли мне делиться/изменять код подключения к базе данных, чтобы он работал с фоновым работником? При необходимости добавлю. Это еще пара строк..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech;
using System.Speech.Synthesis;
using System.Data.OleDb;
namespace rewrite
{
public partial class Form1 : Form
{
//variables
int y_up = 63;
int y_down = 376;
int x_door_left_close = 74;
int x_door_left_open = 12;
int x_door_right_close = 139;
int x_door_right_open = 200;
bool go_up = false;
bool go_down = false;
bool arrived_G = false;
bool arrived_1 = false;
//object
SpeechSynthesizer reader = new SpeechSynthesizer();
public Form1()
{
InitializeComponent();
}
private void timerliftdown_Tick(object sender, EventArgs e)
{
if (picturelift.Top = y_up)
{
picturelift.Top -= 1;
}
else
{
timerliftup.Enabled = false;
btndown.Enabled = true;
btng.Enabled = true;
btnclose.Enabled = true;
btnopen.Enabled = true;
btnup.BackColor = Color.Red;
btn1.BackColor = Color.Red;
dooropenup();
arrived_1 = true;
picturelift.Image = global::rewrite.Properties.Resources.Inside_of_the_lift;
displaypanel.Image = global::rewrite.Properties.Resources._1;
displaytop.Image = global::rewrite.Properties.Resources._1;
displaybottom.Image = global::rewrite.Properties.Resources._1;
}
}
private void dooropendown_Tick(object sender, EventArgs e)
{
if (doorleftdown.Left >= x_door_left_open && doorrightdown.Left = x_door_left_open && doorrightup.Left
Подробнее здесь: https://stackoverflow.com/questions/695 ... lly-workin
Использование/добавление метода делегирования и BackgroundWorker в мою полностью рабочую программу ⇐ C#
Место общения программистов C#
1726622080
Anonymous
Я просмотрел много тем, но не могу понять, как заменить существующие методы делегированием+таймером, поскольку сейчас я использую только таймер. Кроме того, при добавлении BackgroundWorker для работы с btng, который перемещает лифт вниз и открывает двери, я получаю ошибку многопоточного использования, сообщающую, что другой поток пытается вставить данные в .accdb, где записан основной поток. Добавляю код, который не очень длинный, но полностью рабочий. Может ли кто-нибудь подсказать мне, как заменить мои существующие методы делегированием и добавить один или два BackgroundWorker, чтобы помочь кнопкам, которые перемещают лифт и при этом сохранять таймеры, пожалуйста.
< п>П.С. Нужно ли мне делиться/изменять код подключения к базе данных, чтобы он работал с фоновым работником? При необходимости добавлю. Это еще пара строк..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech;
using System.Speech.Synthesis;
using System.Data.OleDb;
namespace rewrite
{
public partial class Form1 : Form
{
//variables
int y_up = 63;
int y_down = 376;
int x_door_left_close = 74;
int x_door_left_open = 12;
int x_door_right_close = 139;
int x_door_right_open = 200;
bool go_up = false;
bool go_down = false;
bool arrived_G = false;
bool arrived_1 = false;
//object
SpeechSynthesizer reader = new SpeechSynthesizer();
public Form1()
{
InitializeComponent();
}
private void timerliftdown_Tick(object sender, EventArgs e)
{
if (picturelift.Top = y_up)
{
picturelift.Top -= 1;
}
else
{
timerliftup.Enabled = false;
btndown.Enabled = true;
btng.Enabled = true;
btnclose.Enabled = true;
btnopen.Enabled = true;
btnup.BackColor = Color.Red;
btn1.BackColor = Color.Red;
dooropenup();
arrived_1 = true;
picturelift.Image = global::rewrite.Properties.Resources.Inside_of_the_lift;
displaypanel.Image = global::rewrite.Properties.Resources._1;
displaytop.Image = global::rewrite.Properties.Resources._1;
displaybottom.Image = global::rewrite.Properties.Resources._1;
}
}
private void dooropendown_Tick(object sender, EventArgs e)
{
if (doorleftdown.Left >= x_door_left_open && doorrightdown.Left = x_door_left_open && doorrightup.Left
Подробнее здесь: [url]https://stackoverflow.com/questions/69590652/using-adding-delegation-method-and-backgroundworker-to-my-currently-fully-workin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия