В 10,04 следующие драйверы были доступны:
, примечания совместимости непосредственно из описания пакета (должен быть 3-й абзац), и не изменились очень в 12,04. Стоит отметить, что текущий Nvidia переместился от 180 законченных до 185 и оттуда к 195 во время 10,04 жизненных циклов.
Используя текущий Nvidia, возможно, работал очень хорошо в 10,04. Но необходимо понять, как Nvidia поддерживает их собственные драйверы. Это не ограничено драйверами Linux/Unix и относится к Windows подобным способом, и AMD/ATI не отличается там.
Для Linux, Nvidia поддерживает 3 версии драйверов: Один для очень старых карт (2000-2005, я знаю, что это не точно, но позволяет нам попытаться сохранить его максимально простым) с очень ограниченным набором функций, один для скорее более новых карт (2005-2010) с большим количеством функций и один с поддержкой последних карт (2010 вперед) и всеми функциями, которые они обеспечивают. Это сделано для сокращения усилия по обслуживанию как можно больше. Если реализация поддержки нового ряда или функции повреждает поддержку более старых карт или делает их нестабильными, затем это - жертва, которая будет сделана, и пользователи тех карт должны переключиться на более старый, но все еще сохраняемый/совместимый ряд драйвера.
Также необходимо знать немного больше о конкретной микросхеме. Википедия говорит, что это - микросхема с 2007 , однако Серия 7 Geforce была выпущена в 2006, и проекты самые низкого уровня основаны на предыдущем ряде или еще ранее. Таким образом, на самом деле говорили о недорогом дизайне с 2005 или 2004.
Мой совет в Вашем случае: Удаляют все старые драйверы и устанавливают nvida-173 драйвер, должно быть достаточно выполнить Compiz (я сделал тот назад в 2008 с 08,04, версия назад, чем был 140 или 160), однако микросхема не может быть достаточно быстрой для выполнения Единицы, Вы могли попытаться отключить размытость в CCSM, если это не помогает, необходимо использовать 2D Единицу.
Вот общее решение, которое позволяет заключить любой метод в тайм-аут:
http://kossovsky.net/index.php/2009/07/csharp-how-to -limit-method-execution-time /
Он использует полезную перегрузку Thread.Join , которая принимает тайм-аут в миллисекундах вместо ручного использования таймеров. Единственное, что я бы сделал иначе, это поменял местами флаг успеха и значение результата, чтобы они соответствовали шаблону TryParse , как показано ниже:
public static T Execute<T>(Func<T> func, int timeout)
{
T result;
TryExecute(func, timeout, out result);
return result;
}
public static bool TryExecute<T>(Func<T> func, int timeout, out T result)
{
var t = default(T);
var thread = new Thread(() => t = func());
thread.Start();
var completed = thread.Join(timeout);
if (!completed) thread.Abort();
result = t;
return completed;
}
И вот как вы могли бы его использовать:
var func = new Func<string>(() =>
{
Thread.Sleep(200);
return "success";
});
string result;
Debug.Assert(!TryExecute(func, 100, out result));
Debug.Assert(result == null);
Debug.Assert(TryExecute(func, 300, out result));
Debug.Assert(result == "success");
Вы также можете добавить перегрузки которые принимают Action вместо Func , если вы хотите выполнить метод, который не возвращает значение.
Похоже, вы выполняете блокирующее чтение / запись. Что вы хотите сделать, так это неблокирующее чтение / запись.
Вероятно, есть способ сообщить COM-порту, что вы хотите неблокировать.
Вы уверены, что таймауты не работают с commstudio? может быть, вам нужно сделать что-то особенное для их инициализации.
В любом случае, вы хотите прочитать как можно больше данных, и если ни один из них не доступен, тайм-аут (в зависимости от значения тайм-аута). Вы захотите продолжить цикл, пока нет данных и ошибок, а затем вернуть условие тайм-аута, если ничего не доступно.
Сделайте так, чтобы ваша функция чтения возвращала целое число. отрицательные значения = значение ошибки, например -1 = тайм-аут, положительное количество прочитанных байтов ... по крайней мере, я бы так поступил.