Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14

Вызов метода в коде

03.10.2013, 15:40. Показов 4957. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,уважаемые форумчане!К сожалению я не программист и осваивать Си Шарп начал совсем недавно в виду необходимости.Имеются исходники программы которые я стараюсь немного доработать.Возникла необходимость вызвать обработчик?Метод?, незнаю как правильно назвать в другом месте кода
Ни знакомых со знанием шарп нету ни своих навыков нехватает ( Очень надеюсь на Вашу помощь!На ЯДеньгах валяется 60 рупий отдам в благодарность)
вот это

public void startButton_Click(object sender, RoutedEventArgs e)

MainWindow.xaml.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
using System;
using System.ComponentModel;
using System.Configuration;
using System.Deployment.Application;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
using System.Media;
using EVEbot.Properties;
using WinAPI;
using Application = System.Windows.Forms.Application;
using IC = XxXbot.InterfaceCoordinates;
 
namespace XxXbot
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
 
    public partial class MainWindow
    {
        IntPtr hwnd;
        long sizeOfUpdate = 0;
        //Image<Bgr, byte> imgSource;
        //List<string> overviewItems;
        Thread botThread;
        FileInfo[] fileInfos;
        private DispatcherTimer dispatcher;
        public MainWindow()
        {
           
            InitializeComponent();
            GetConfigurationFiles();
           
        }
 
        private void GetConfigurationFiles()
        {
            var filepath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
            var path = filepath.Remove(filepath.LastIndexOf('\\')+1);
           
            DirectoryInfo directoryInfo = new DirectoryInfo(path);
            if (directoryInfo.Exists)
            {
                fileInfos = directoryInfo.GetFiles("*.config");
                listBox.ItemsSource = fileInfos;
 
                
            }
            if (fileInfos == null || fileInfos.Length == 0)
            {
                Settings.Default.character = "Type here youre char name";
                Settings.Default.Save();
                Application.Restart();
                Close();
            }
 
 
 
        }
 
 
        private void image1_Initialized(object sender, EventArgs e)
        {
 
 
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            UpdateApplication();
 
            
        }
        
        private void Window_Closed(object sender, EventArgs e)
        {
            Settings.Default.Save();
            if (botThread != null) 
                botThread.Abort();
            GC.Collect();
            GC.Collect();
            //base.Closed(e); 
        }
 
        public void startButton_Click(object sender, RoutedEventArgs e)
        {
            if (botThread != null)
            {
                stopButton_Click(null, null);
            }
 
 
            if (ApplicationDeployment.IsNetworkDeployed)
            {
                ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                Title = "VEoV - " + Settings.Default.character + " " + ad.CurrentVersion;
            }
            else
                Title = "VEoV - " + Settings.Default.character;
            hwnd = API.FindWindow("triuiScreen", "XxX - "+ Settings.Default.character);
            if (hwnd.ToInt32() == 0)
            {
                hwnd = API.FindWindow("triuiScreen", "XxX");
                if (hwnd.ToInt32() == 0)
                 {
                     MessageBox.Show("Cant find XxX window");
                 }
 
            }
            Logic.hwnd = hwnd;
            EmguCVwrapper.hwnd = hwnd;
            API.hwnd = hwnd;
            
            Logic.uiDispatcher = Dispatcher.CurrentDispatcher;
            Logic.LogTextBox = logTextBox;
            /*
            if (hwnd.ToInt32() == 0)
            {
             
                
                //string path = 
                //запускаем VEoV
                //SoundPlayer player = new SoundPlayer();
                //player.SoundLocation = "D:\\ir_begin.wav";
                //player.Play();
                //MessageBox.Show("Cant find VEoV window");
                //MessageBox.Show("запускаем " +  Settings.Default.character);
                //System.Diagnostics.Process proc = new System.Diagnostics.Process();
                //proc.StartInfo.FileName = "D:\\games\\VEoV\\VEoV.exe";
                //proc.Start();
                //proc.WaitForExit();
                return;
            }
            */
            startTimeLabel.Content = DateTime.Now.ToString();
 
 
            ThreadStart logic = Logic.LazyMiner;
            if(logicCombobox.SelectedIndex == 0)
                logic = Logic.LazyMiner;
            if (logicCombobox.SelectedIndex == 1)
                logic = Logic.JetContMiner;
            if (logicCombobox.SelectedIndex == 2)
                logic = Logic.OreToStationTransport;
            if (logicCombobox.SelectedIndex == 3)
                logic = Logic.Test;
            botThread = new Thread(logic); // тут сторюєтсья потік
            botThread.Start();
            botThread.Priority = ThreadPriority.Lowest;
            Settings.Default.launchDrones = 0;
            Settings.Default.armorLost = 0;
 //           Settings.Default.docking = 0;
            dispatcher = new DispatcherTimer(new TimeSpan(0, 0, Settings.Default.checkBotStateDelay), DispatcherPriority.Loaded, delegate
            {
                if (botThread.ThreadState == System.Threading.ThreadState.Stopped)
                {
 
                    
                    botThread.Abort();
                    botThread = new Thread(logic); // тут я його перезапускаю
                    botThread.Start();
                    if (logTextBox.Text.Length > 1000)
                        logTextBox.Text.Remove(logTextBox.Text.Length - 1000);
                    logTextBox.Text = "Новый цикл \n" + logTextBox.Text; 
                        GC.Collect();
                    
                }
                
 
            }, Dispatcher);
        }
 
 
        private void stopButton_Click(object sender, RoutedEventArgs e)
        {
            botThread.Abort();
            Logic.ResetStaticVars();
            IC.ResetPositions();
            
            dispatcher.Stop();
 
            GC.Collect();
           
        }
выполнить в

public static void Test()

Logic.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Drawing;
 
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using System.Windows.Threading;
using EVEbot.Properties;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.OCR;
using Emgu.CV.Structure;
//using EVEbot;
using MODI;
using CV = XxXbot.EmguCVwrapper;
using IC = XxXbot.InterfaceCoordinates;
using CT = XxXbot.CachedTemplates;
using Image = MODI.Image;
 
//using Image = MODI.Image;
 
namespace XxXbot
{
    static class Logic 
    {
        public static List<string> OreListFull
        {
            get
            {
                return
                    @"Velidarian
 
".Split('\n').ToList();
            }
        }
        public static List<double> OreVolumeFull
        {
            get
            {
                return new[]
                           {
                               0.1,
                               0.6,
 
                           }.ToList();
            }
        }
 
        static public IntPtr hwnd { get; set; }
        static public Dispatcher uiDispatcher { get; set; }
        static public System.Windows.Controls.TextBox LogTextBox { get; set; }
        private static Tesseract _ocr;
        private static Document md;
       
 
        private static List<string> _targetOreList;
        private static int _unsuccessfulLocking = 0;
        private static int _beltCount;
        private static int _prevBelt;
        private static bool _justUndoked;
        private static DateTime _warpStartTime = DateTime.MinValue;
        private static List<DateTime> _lasersStartTimes = new List<DateTime>(Settings.Default.MinersCount);
        private static List<double> _newTargetsVolume;
        private static List<int> _lasersCycleTime = new List<int>(Settings.Default.MinersCount);
 
        static Logic()
        {
            if (Settings.Default.useMODI)
                md = new Document();
            //else
            {
                _ocr = new Tesseract("tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);
                //_ocr.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
                _ocr.SetVariable("tessedit_char_blacklist", "BCDEFGHIJKLMNOPQRSTVWXYZabcdefghijlnopqrstuvwxyz");
                //_ocr.SetVariable("tessedit_char_whitelist", "AUkm1234568990"); 
            }
           MakeTargetOreList();
        }
        public static string teseractORC(Image<Gray, byte> img)
        {
            var tmp = img.Resize(5.0, INTER.CV_INTER_CUBIC);
            Image<Gray, byte> gray = tmp.Convert<Gray, byte>();
            gray._ThresholdBinaryInv(new Gray(100), new Gray(256));
            
            _ocr.Recognize(gray);
 
            return _ocr.GetText();
        }
 
        public static string MODIocr(Image<Gray, byte> img)
        {
            
            string file = Path.GetRandomFileName().Split('.')[0] + ".tiff";
            if (img.Height < 300)
                img = img.Resize(1.5, INTER.CV_INTER_CUBIC);
           
            img.Save(file);
            lock (typeof(Logic))
            {
                string text = "";
                md.Create(file);
                try
                {
                    md.OCR(MiLANGUAGES.miLANG_ENGLISH, false, false);
                }
                catch (Exception)
                {
                    return text;
                }
               
 
                Monitor.PulseAll(typeof(Logic));
                Monitor.Wait(typeof(Logic), 100); //wait less time possible
                text = ((Image)md.Images[0]).Layout.Text;
 
                //md.Save();
                var _images = md.Images;
                var _image = (Image)_images[0];
                var _layout = _image.Layout;
                md.Close(false);
 
                SetComObjectToNull(_layout, _image, _images);
 
                // Force garbage collection so image file is closed properly
                GC.Collect();
                GC.WaitForPendingFinalizers();
 
                File.Delete(file);
 
                return text;
            }
        }
        public static void ResetStaticVars()
        {
            _targetOreList = null;
            _unsuccessfulLocking = 0;
            _beltCount = 0;
            _prevBelt = 0;
            _justUndoked = false;
        }
        public static void Test()
        {
 
            if (InSpace())
            {
                Settings.Default.logic = 0;
                startButton_Click();            
                
            }
 
            Jump();
 
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.10.2013, 15:40
Ответы с готовыми решениями:

Вызов метода в коде MainWindow
Не получается вызвать конструктор внутри MainWindow. Ошибка IDE1007 Имя &quot;Create&quot; не существует в текущем контексте. ...

Вызов async метода
Приветствую. Возникла проблема. Пишу под WP8 (прошу тему не переносить ибо в том разделе никого почти нет, да и тут тот же wpf или...

Вызов метода у UserControl из ViewModel
Есть библиотека пользовательских элементов управления. В ней EventLogControl и AnimationControl. В XAML для EventLogControl задаётся...

17
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 15:42
Что выполнить? Вы показали код всего окна, а не метода
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 15:55  [ТС]
Цитата Сообщение от da1z Посмотреть сообщение
Что выполнить? Вы показали код всего окна, а не метода
я это имею ввиду, вначале написал.Чтобы выполнилось все что включено в этот метод.
public void startButton_Click(object sender, RoutedEventArgs e)
в
public static void Test()
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 15:59
Всё сломается если так сделать, т.к. у вас public void startButton_Click(object sender, RoutedEventArgs e) в теле вызывает Logic.Test; в которой вы в свою очередь хотите опять вызвать startButton_Click.
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 16:01  [ТС]
Цитата Сообщение от da1z Посмотреть сообщение
Всё сломается если так сделать, т.к. у вас public void startButton_Click(object sender, RoutedEventArgs e) в теле вызывает Logic.Test; в которой вы в свою очередь хотите опять вызвать startButton_Click.
Я поэтому и прошу помощи)Возможно есть какие то другие способы?
кстати они находятся в разных файлах.Кликбуттон в MainWindow.xaml.cs а Тест в Logic.cs
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 16:04
Я не совсем понимаю что вы хотите этим сделать. Объясните и я помогу
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 16:08  [ТС]
С грамотностью объяснения беда)Но попробую как смогу.
В интерфейсе приложения есть кнопка Старт при нажатии на которую выполняется ряд действий из startButton_Click
И есть логика с циклами,так вот я хочу чтобы при опридеоенных условиях выполнялись действия которые происходят при нажатии на кнопку старт.Тоесть как бы програмно нажать эту кнопку....Надеюсь смог более менее внятно рассказать)
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 16:11
г*вно вариант, но прокатит)
вместо
C#
1
2
            if (logicCombobox.SelectedIndex == 3)
                logic = Logic.Test;
напишите
C#
1
2
3
4
5
6
            if (logicCombobox.SelectedIndex == 3)
   {
 
                logic = Logic.Test;
                startButton_Click(object sender, RoutedEventArgs e)
    }
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 16:23  [ТС]
если правильно понимаю нужно не совсем так.вызвать в Logic.cs функцию startbutton_click
Тоесть
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
       public static void Test()
        {
            if (InSpace())
            {
                
                {
                  startButtonClick(object sender, RoutedEventArgs e);
                }
                Jump();
            }
            
 
 
        }
Но так не получается
Ошибка 1 Элемент "startButtonClick" не существует в текущем контексте. E:\C#\Release\ore lab\Logic.cs 366 19
и еще куча ошибок
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 16:28
надо вызвать startButtonClick в методе startButtonClick , рекурсия называется

Добавлено через 38 секунд
только вот так
C#
1
startButton_Click(sender, e)
проще прощения за описку.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.10.2013, 16:31
Цитата Сообщение от CTuJleT Посмотреть сообщение
програмно нажать эту кнопку
C#
1
button.PerformClick();
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 16:34  [ТС]
Цитата Сообщение от da1z Посмотреть сообщение
надо вызвать startButtonClick в методе startButtonClick , рекурсия называется

Добавлено через 38 секунд
только вот так
C#
1
startButton_Click(sender, e)
проще прощения за описку.
Можно подробнее пожалуйста куда вставить и как вызвать
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 16:38
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public void startButton_Click(object sender, RoutedEventArgs e)
        {
            if (botThread != null)
            {
                stopButton_Click(null, null);
            }
 
 
            if (ApplicationDeployment.IsNetworkDeployed)
            {
                ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                Title = "VEoV - " + Settings.Default.character + " " + ad.CurrentVersion;
            }
            else
                Title = "VEoV - " + Settings.Default.character;
            hwnd = API.FindWindow("triuiScreen", "XxX - "+ Settings.Default.character);
            if (hwnd.ToInt32() == 0)
            {
                hwnd = API.FindWindow("triuiScreen", "XxX");
                if (hwnd.ToInt32() == 0)
                 {
                     MessageBox.Show("Cant find XxX window");
                 }
 
            }
            Logic.hwnd = hwnd;
            EmguCVwrapper.hwnd = hwnd;
            API.hwnd = hwnd;
            
            Logic.uiDispatcher = Dispatcher.CurrentDispatcher;
            Logic.LogTextBox = logTextBox;
            /*
            if (hwnd.ToInt32() == 0)
            {
             
                
                //string path = 
                //запускаем VEoV
                //SoundPlayer player = new SoundPlayer();
                //player.SoundLocation = "D:\\ir_begin.wav";
                //player.Play();
                //MessageBox.Show("Cant find VEoV window");
                //MessageBox.Show("запускаем " +  Settings.Default.character);
                //System.Diagnostics.Process proc = new System.Diagnostics.Process();
                //proc.StartInfo.FileName = "D:\\games\\VEoV\\VEoV.exe";
                //proc.Start();
                //proc.WaitForExit();
                return;
            }
            */
            startTimeLabel.Content = DateTime.Now.ToString();
 
 
            ThreadStart logic = Logic.LazyMiner;
            if(logicCombobox.SelectedIndex == 0)
                logic = Logic.LazyMiner;
            if (logicCombobox.SelectedIndex == 1)
                logic = Logic.JetContMiner;
            if (logicCombobox.SelectedIndex == 2)
                logic = Logic.OreToStationTransport;
            if (logicCombobox.SelectedIndex == 3)
              {
 [COLOR="Red"]               startButton_Click(sender, e);[/COLOR]
                logic = Logic.Test;
              }
            botThread = new Thread(logic); // тут сторюєтсья потік
            botThread.Start();
            botThread.Priority = ThreadPriority.Lowest;
            Settings.Default.launchDrones = 0;
            Settings.Default.armorLost = 0;
 //           Settings.Default.docking = 0;
            dispatcher = new DispatcherTimer(new TimeSpan(0, 0, Settings.Default.checkBotStateDelay), DispatcherPriority.Loaded, delegate
            {
                if (botThread.ThreadState == System.Threading.ThreadState.Stopped)
                {
 
                    
                    botThread.Abort();
                    botThread = new Thread(logic); // тут я його перезапускаю
                    botThread.Start();
                    if (logTextBox.Text.Length > 1000)
                        logTextBox.Text.Remove(logTextBox.Text.Length - 1000);
                    logTextBox.Text = "Новый цикл \n" + logTextBox.Text; 
                        GC.Collect();
                    
                }
                
 
            }, Dispatcher);
        }
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 16:51  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
C#
1
button.PerformClick();
Ошибка 1 Элемент "startButton" не существует в текущем контексте. E:\C#\Release\ore lab\Logic.cs 366 21
вот как прописана сама кнопка в Файле
C#
1
 <Button Content="Старт" Height="23" HorizontalAlignment="Left" Margin="5,5,5,5" Name="startButton" VerticalAlignment="Top" Width="75" Grid.Column="1" Click="startButton_Click" />
 Комментарий модератора 
Заливайте вложения на форум


Добавлено через 6 минут
Цитата Сообщение от da1z Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public void startButton_Click(object sender, RoutedEventArgs e)
        {
            if (botThread != null)
            {
                stopButton_Click(null, null);
            }
 
 
            if (ApplicationDeployment.IsNetworkDeployed)
            {
                ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                Title = "VEoV - " + Settings.Default.character + " " + ad.CurrentVersion;
            }
            else
                Title = "VEoV - " + Settings.Default.character;
            hwnd = API.FindWindow("triuiScreen", "XxX - "+ Settings.Default.character);
            if (hwnd.ToInt32() == 0)
            {
                hwnd = API.FindWindow("triuiScreen", "XxX");
                if (hwnd.ToInt32() == 0)
                 {
                     MessageBox.Show("Cant find XxX window");
                 }
 
            }
            Logic.hwnd = hwnd;
            EmguCVwrapper.hwnd = hwnd;
            API.hwnd = hwnd;
            
            Logic.uiDispatcher = Dispatcher.CurrentDispatcher;
            Logic.LogTextBox = logTextBox;
            /*
            if (hwnd.ToInt32() == 0)
            {
             
                
                //string path = 
                //запускаем VEoV
                //SoundPlayer player = new SoundPlayer();
                //player.SoundLocation = "D:\\ir_begin.wav";
                //player.Play();
                //MessageBox.Show("Cant find VEoV window");
                //MessageBox.Show("запускаем " +  Settings.Default.character);
                //System.Diagnostics.Process proc = new System.Diagnostics.Process();
                //proc.StartInfo.FileName = "D:\\games\\VEoV\\VEoV.exe";
                //proc.Start();
                //proc.WaitForExit();
                return;
            }
            */
            startTimeLabel.Content = DateTime.Now.ToString();
 
 
            ThreadStart logic = Logic.LazyMiner;
            if(logicCombobox.SelectedIndex == 0)
                logic = Logic.LazyMiner;
            if (logicCombobox.SelectedIndex == 1)
                logic = Logic.JetContMiner;
            if (logicCombobox.SelectedIndex == 2)
                logic = Logic.OreToStationTransport;
            if (logicCombobox.SelectedIndex == 3)
              {
 [COLOR="Red"]               startButton_Click(sender, e);[/COLOR]
                logic = Logic.Test;
              }
            botThread = new Thread(logic); // тут сторюєтсья потік
            botThread.Start();
            botThread.Priority = ThreadPriority.Lowest;
            Settings.Default.launchDrones = 0;
            Settings.Default.armorLost = 0;
 //           Settings.Default.docking = 0;
            dispatcher = new DispatcherTimer(new TimeSpan(0, 0, Settings.Default.checkBotStateDelay), DispatcherPriority.Loaded, delegate
            {
                if (botThread.ThreadState == System.Threading.ThreadState.Stopped)
                {
 
                    
                    botThread.Abort();
                    botThread = new Thread(logic); // тут я його перезапускаю
                    botThread.Start();
                    if (logTextBox.Text.Length > 1000)
                        logTextBox.Text.Remove(logTextBox.Text.Length - 1000);
                    logTextBox.Text = "Новый цикл \n" + logTextBox.Text; 
                        GC.Collect();
                    
                }
                
 
            }, Dispatcher);
        }
Как потом ее вызвать из public void Test() ?
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
03.10.2013, 16:58
это незачем он и так будет вызываться при условии logicCombobox.SelectedIndex == 3
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 17:24  [ТС]
Цитата Сообщение от da1z Посмотреть сообщение
это незачем он и так будет вызываться при условии logicCombobox.SelectedIndex == 3
Это не совсем то что нужно. Тест это логика для тестирования.Я прост использовал ее для примера.Нужно чтобы буттон старт вызывалась при каком нибудь условии внутри логики например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
        public static void LazyMiner()
        {
            //Test();
            try
            {
                start:
                OKandCancelAndNo();
                if (_beltCount == 0)
                    GetBeltsCount();
                if (Settings.Default.useFleet)
                {
                    if (!inFleet())
                    {
                        if (Fleet())
                        {
~~~~~~~~~~~~~startButton_Click()~~~~~~~~~~~~~~~~
                            joinFleet();
                        }
                    }
                }
                if (!Undocking() && InStation())
                {
                    int attempts = 0;
                    while (IsCargoLoad() && attempts < 3)
                    {
                        UnloadCargo();
                        attempts++;
                    }
                    if (attempts > 2)
                    {
                        goto start;
                    }
                    attempts = 0;
                    if (Settings.Default.defenceDrones)
                        while (!IsDroneBayFull() && attempts < 3)
                    {
                        LoadDrones();
                        attempts++;
                    }
                    attempts = 0;
                    if (Settings.Default.armorLost != 0)
                    {
                        RepairAll();
                    }
                    Log(" не поврежден");
                    
                    Undock();
                    Settings.Default.docking = 0;
                    _justUndoked = true;
                    return;
                }
           }
Тоесть если условие Fleet() Верно - выполняем startButton_Click.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
03.10.2013, 17:37
Вечная проблема - размещение темы в нужном разделе.
Я дал совет по WinForm, у тебя WPF.
 Комментарий модератора 
Перенесено
1
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 14
03.10.2013, 20:02  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Вечная проблема - размещение темы в нужном разделе.
Я дал совет по WinForm, у тебя WPF.
Перенесено
Прошу прщения =\ Я незнал к чему относится этот код..

Добавлено через 2 часа 23 минуты
da1z, У Вас больше нет идей?..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2013, 20:02
Помогаю со студенческими работами здесь

Вызов метода из другого класса
Вопрос наверняка не сложный для тех, кто понимает ООП. Я пока не силен в этом, поэтому спрошу здесь. Имеется код Main Window (это WPF,...

Вызов метода сразу после загрузки окна
Мне нужно чтобы метод PrimaryData(); отработал сразу после инициализации окна. Можна ли это сделать так чтобы не вызывать этот метод с...

Вызов метода C# из JavaScript
Пишу сайт на ASP.NET и у меня возникла трудность. Необходимо чтобы функция на JavaScript вызывала функцию C#. Подскажите как это...

Вызов метода из сборки
Всем привет Я хочу сделать вызов метода из подгруженной сборки Код загрузчика, который загружает длл и пытается вызвать метод: ...

Вызов из c# метода в Dll с++
Доброго времени суток, нужна помощь имеется ДЛЛ написанная на с++ И мои труды написанные на C#.В длл есть функция: PHP код: void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru