Тема
Когда вы запускаете приложение, создается процесс для выполнения кода. Чтобы эффективно использовать вычислительный ресурс, потоки могут быть запущены внутри процесса, чтобы одновременно можно было выполнить несколько задач. Таким образом, потоки позволяют создавать эффективные приложения, эффективно используя процессор без простоев.
В Android все компоненты выполняются в одном основном потоке. Задачи очереди Android и выполняйте их одну за другой в главном потоке. Когда долго выполняющиеся задачи выполняются, приложение перестает отвечать на запросы.
Чтобы предотвратить это, вы можете создавать рабочие потоки и запускать фоновые или долго выполняющиеся задачи.
Обработчик
Поскольку android использует однопоточную модель, компоненты пользовательского интерфейса создаются не поточно-безопасными, то есть доступ к ним должен иметь только созданный им поток, то есть компонент пользовательского интерфейса должен обновляться в основном потоке. только. Поскольку компонент пользовательского интерфейса выполняется в основном потоке, задачи, выполняемые в рабочих потоках, не могут изменять компоненты пользовательского интерфейса. Это где Handler входит в картину. Обработчик с помощью Looper может подключиться к новому потоку или существующему потоку и запустить код, который он содержит в подключенном потоке.
Обработчик делает возможным взаимодействие между потоками. Используя Handler, фоновый поток может отправлять ему результаты, а обработчик, подключенный к основному потоку, может обновлять компоненты пользовательского интерфейса в основном потоке.
AsyncTask
AsyncTask, предоставляемый android, использует как поток, так и обработчик для упрощения выполнения простых задач в фоновом режиме и обновления результатов из фонового потока в основной поток.
См. android thread, handler, asynctask и пулы потоков для примеров.
в объекте Column есть свойство HeaderText , вы можете найти столбец и установить его HeaderText после инициализации сетки или сделать это в конструкторе форм Windows через дизайнер для DataGrid.
public Form1()
{
InitializeComponent();
grid.Columns[0].HeaderText = "First Column";
//..............
}
Более подробная информация здесь в MSDN. Более подробная информация о DataGrid здесь .
grid.Columns[0].HeaderText
или
grid.Columns["columnname"].HeaderText
Для информации , если вы привязываетесь к классу, вы можете сделать это в своем типе через DisplayNameAttribute
:
[DisplayName("Access key")]
public string AccessKey { get {...} set {...} }
Теперь текст заголовка в автоматически сгенерированных столбцах будет «Ключ доступа».