GridView прокручивает обратно вверх после выбора строки

Синхронизированное просто означает, что несколько потоков, если они связаны с одним объектом, могут предотвратить загрязнение чтения и записи, если на конкретном объекте используется синхронизированный блок. Чтобы дать вам больше ясности, давайте возьмем пример:

class MyRunnable implements Runnable {
    int var = 10;
    @Override
    public void run() {
        call();
    }

    public void call() {
        synchronized (this) {
            for (int i = 0; i < 4; i++) {
                var++;
                System.out.println("Current Thread " + Thread.currentThread().getName() + " var value "+var);
            }
        }
    }
}

public class MutlipleThreadsRunnable {
    public static void main(String[] args) {
        MyRunnable runnable1 = new MyRunnable();
        MyRunnable runnable2 = new MyRunnable();
        Thread t1 = new Thread(runnable1);
        t1.setName("Thread -1");
        Thread t2 = new Thread(runnable2);
        t2.setName("Thread -2");
        Thread t3 = new Thread(runnable1);
        t3.setName("Thread -3");
        t1.start();
        t2.start();
        t3.start();
    }
}

Мы создали два объекта класса MyRunnable, runnable1 - совместно с потоком 1 и потоком 3 & amp; runnable2 используется только для потока 2. Теперь, когда t1 и t3 запускаются без использования синхронизации, вывод PFB, который предполагает, что оба потока 1 и 3 одновременно влияют на значение var, где для потока 2, var имеет свою собственную память.

Without Synchronized keyword

    Current Thread Thread -1 var value 11
    Current Thread Thread -2 var value 11
    Current Thread Thread -2 var value 12
    Current Thread Thread -2 var value 13
    Current Thread Thread -2 var value 14
    Current Thread Thread -1 var value 12
    Current Thread Thread -3 var value 13
    Current Thread Thread -3 var value 15
    Current Thread Thread -1 var value 14
    Current Thread Thread -1 var value 17
    Current Thread Thread -3 var value 16
    Current Thread Thread -3 var value 18

Использование Synchronzied, thread 3 ожидание завершения потока 1 во всех сценариях. Имеются две блокировки: одна на runnable1, совместно используемая нитью 1 и потоком 3, а другая на runnable2, совместно используемая только потоком.

Current Thread Thread -1 var value 11
Current Thread Thread -2 var value 11
Current Thread Thread -1 var value 12
Current Thread Thread -2 var value 12
Current Thread Thread -1 var value 13
Current Thread Thread -2 var value 13
Current Thread Thread -1 var value 14
Current Thread Thread -2 var value 14
Current Thread Thread -3 var value 15
Current Thread Thread -3 var value 16
Current Thread Thread -3 var value 17
Current Thread Thread -3 var value 18
14
задан rafek 23 January 2009 в 21:06
поделиться

3 ответа

Если это происходит во время обратной передачи, то в Вашем < % % Page > директива можно добавить следующее:

MaintainScrollPositionOnPostback="true"

Это было добавлено в.NET 2.0 и добавляет некоторый JavaScript к странице, чтобы гарантировать, что страница прокручивает вниз назад к управлению, которое вызвало обратную передачу.

Работы обработка.

18
ответ дан 1 December 2019 в 12:14
поделиться

Я нашел другое решение. Если у Вас есть GridView в контейнере отделения с возможностью прокрутки, я рекомендую это: Сохраняют Позицию Прокрутки DIV

4
ответ дан 1 December 2019 в 12:14
поделиться

Это перезагружает целую страницу после выбора строк? Если так, попытайтесь поместить GridView в UpdatePanel, так, чтобы событие было отправлено на сервер, на самом деле не перезагружая целую страницу.

2
ответ дан 1 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: