Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Предупредить асинхронный вызов методов статического класса из разных потоков / 3 сообщений из 3, страница 1 из 1
13.07.2017, 19:38
    #39488671
Old_Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предупредить асинхронный вызов методов статического класса из разных потоков
Метод SomeMethod() вызывается из 1-го потока.
Если вслед за этим метод вызывается из 2-го потока, нужно дождаться завершения его вызова из 1-го потока. Прокатит ли подобный код?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static class SomeClass
{
	private static bool is_running = false;
	public static void SomeMethod()
	{
		while(is_running) Sleep(100);
		is_running = true;
			
		// Здесь код метода
		
		is_running = false;
		return;
	}
}
...
Рейтинг: 0 / 0
13.07.2017, 19:47
    #39488678
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предупредить асинхронный вызов методов статического класса из разных потоков
Old_Fish,

нет. надо так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public static class SomeClass
{
	private static object syncObject = new object();

	public static void SomeMethod()
	{
                lock(syncObject) {
   		   // Здесь код метода
                }
		return;
	}
}
...
Рейтинг: 0 / 0
14.07.2017, 11:50
    #39488963
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предупредить асинхронный вызов методов статического класса из разных потоков
hVosttOld_Fish,

нет. надо так:


Или пометить метод
Код: c#
1.
 [MethodImpl(MethodImplOptions.Synchronized)]
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Предупредить асинхронный вызов методов статического класса из разных потоков / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]