Thread synchronization
Hi all
I don't really know how to work the Blackberry UI thread!
I have the function run a thread in which I make my travel manager. After the move is completed I want to set the focus on the Manager, but is not update:
first call this function
later, calling animateProfile() - thread function
and finally call animCompleted() (who must be the focus on manager)
public void performAction() {}
If (null == profileClick) {}
If (null! = listener) {}
listener.performAction ();
}
initProfile();
animateProfile();
animCompleted();
} else {}
Reset();
}
}
private synchronized void animateProfile() {}
Blade wire = new Thread() {}
public void run() {}
int count = 0;
int height = profileClick.getPreferredHeight () + 4;
While (count< height)="">
profileClick.moveScreen (0, count);
Invalidate();
try {}
Thread.Sleep (10);
} catch (InterruptedException e) {}
e.printStackTrace ();
}
Count += 8;
}
animCompleted = true;
}
};
Slide.Start ();
}
private void animCompleted() {}
If {(animCompleted)
profileClick.setFocus ();
}
}
Any help?
Greetings.
As arkadyz says, in your call to animCompleted() is run, if the variable animCompleted Boolean is false, that it does not lead us to know.
Your call to animCompleted() must be made since your overloaded runs your slide wire internal class method. In addition, you must call it in such way that the thread of events that changes the user interface and any other foreign thread.
To achieve this, you must do something like this:
private synchronized void animateProfile() { Thread slide = new Thread() { public void run() { int count = 0; int height = profileClick.getPreferredHeight() + 4; while (count < height) { synchronized (UiApplication.getEventLock()) { profileClick.moveScreen(0, count); invalidate(); } try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } count += 8; } UiApplication.getUiApplication().invokeLater(new Runnable(){ public void run() { profileClick.setFocus(); } }); } }; slide.start(); }
Let me know how helpful it is for you, please. Good luck.
Tags: BlackBerry Developers
Similar Questions
-
How to synchronize two timers that send data?
Hi, I have a problem:
I have a thread in which I have two timers with timerTask. two of them will send data on the server. the first 5 sec every one and the all other the 1 sec the problem is that when I run the defective computer application (disconnection with an IOException error) after 3-4 sec, I think it's probalby because in an instant, both of them are trying to send data and can only be in one second. I tried to create both a dataOutputStreams but this is not enough. Here is my code:
//in my thread, run method: public void run(){ synchronized(_firstTimer){ //send data every 5 sec _firstTimer.scheduleAtFixedRate(new TimerTask(){ public void run(){ sendData(_data1); } },0, 5000); } while(true){ synchronized(_secondTimer){ //send data every second _secondTimer.scheduleAtFixedRate(newTimerTask(){ public void run(){ sendData(_data2); } }, 0, 1000); } }//end of while }//end of run() //and sendData() method: public boolean sendData(byte[] _b){ int length = _b.length; try{ _os.write(_b, 0, length); _os.flush(); return true; } catch(Exception e){ return false; } }//end of sendData method //where before in the code i've got: SocketConnection _s = (SocketConnection)Connector.open(_address); _os = _s.openDataOutputStream();
can someone please provide all my advice how to fix this?
Kind regards
a solution would be a 'executable queue", a vector that contains objects that implement the runnable interface and executes one by one.
the two timertasks add their treatment to the queue (synchronized) and directs the queue.It is a lot of material on threads synchronization available on the net because it is one of the most basic problems of treatment / distributed computing.
I'm sure you can find detailed examples to sun.com and many other java sites. -
synchronization on the element HashMap
Hi all:
My understanding is that if we want to ensure the security of the value of a HashMap threads, synchronization on HashMap along is not enough: it must synchronize the elements of value as well, if they are used by multiple threads. I wrote a test program to check this idea:
In the above code, operations such as 'Add' and 'get' against the plan are properly synchronized, but it is element whose type is TestClass, is not (methods in TestClass have synchronized block). So when the instance of TestClass is exposed to my two sons, done with Task1 (increasing a counter by 10 times) and Task2 (decreasing the same counter 5 times), I would expect some other than 5 County. However, when the meter is printed, the result is always 5 - swiped TestClass is thread-safe too.import java.util.HashMap; import java.util.Map; public class ThreadSafeMapTest { static class TestClass{ private int count=0; public void increment(){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } count++; } public void decrement(){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } count--; } public int getCount(){ return count; } } private Map<String, TestClass> map = new HashMap<String,TestClass>(); private TestClass tc = new TestClass(); public synchronized void add(){ map.put("1", tc); } public synchronized TestClass get(String id){ return map.get(id); } static class Task1 implements Runnable{ private ThreadSafeMapTest tst; Task1(ThreadSafeMapTest tst){ this.tst = tst; } @Override public void run(){ tst.add(); TestClass ts = tst.get("1"); for(int i=0;i<10;i++) ts.increment(); } } static class Task2 implements Runnable{ private ThreadSafeMapTest tst; Task2(ThreadSafeMapTest tst){ this.tst = tst; } @Override public void run(){ tst.add(); TestClass ts = tst.get("1"); for(int i=0;i<5;i++) ts.decrement(); } } public static void main(String[] args) { ThreadSafeMapTest tst = new ThreadSafeMapTest(); Thread t1 = new Thread(new Task1(tst)); t1.start(); Thread t2 = new Thread(new Task2(tst)); t2.start(); /*try { t1.join(); t2.join(); } catch (InterruptedException e) { e.printStackTrace(); }*/ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } TestClass ts = tst.get("1"); System.out.println(ts.getCount()); } }
Is there something wrong in my designed test? Or my understanding is wrong, or that the test isn't enough?
Thank you
JohnWell, I looked at your code, and I stand by my original proposal. You do 10 incs and decs 5, so, in that a single thread context or a multithreaded context properly synchronized, you will get 5.
So, what could cause a different value? The only possibility in the same situation of CPU is due to the non-atomicite of ++ and--, and in a situation of multi-CPU, we also have the chance to local copies of threads of shared variables, leading to different values.
For instance, count ++ involves 1) lu County, 2) add 1, 3) write the new value back County and also for. So if count is 3, we could have the following:
T1 reads 3. T2 reads 3. T2 decrements to 2. T2 writes 2. T1 incs to 4. T1 writes 4.
So we have 4, when the increases and decreases should leave us back to 3.
However, this kind of simultaneous inc/dec is the only way that we will get different values. Capacity helps you get different values here. In fact, they probably make you hurt. You need to be able to put a sleep between the highest 1, 2, 3 stages.
If you are running on a single CPU/core, it is unlikely that a thread will get swapped Middle inc/dec, especially with these people there. And if you take her sleeping outside, then a thread will get to make all its incs or decs before the other thread does nothing. The only way you could see a different value in a uniprocessor situation is if you have no beds and a very large number of incs/decs (millions or even billions).
If you have multiple processors and get rid of the capacity and use a larger number of incs and decs, then you might get a different value. It won't for reasons of non-atomicite, however, but because each thread can have its own copy of the count variable. There is no guarantee however. We know only that he peut happen, not that it will be.
-
Help - BrowserField2, Media Player and son
Hello everyone
In my application, I have BrowserField2 added to the screen and multimedia player based on Streaming media - start to finish. I try to open the media player in browser using extensive javascript. My plan is that when the user clicks on links in the web page, I call javascript function extended with some parameters such as the url of the video to stream. This function pushes to turn screen player with the passed url. Œuvres very good media player and video streams when used standalone. But it does not play video when it is associated with BrowserField using extended javascript.
I suspect that the problem is with the event thread synchronization or threading-related. I push the screen containing the multimedia player using runnable. The screen appears. But when I click on the play button (which begins a few discussions to get video and play), nothing happens and my application crashes. I am not able to pinpoint the problem. You will appreciate if someone can pin point the problem.
Thank you.
A few announcements of code as below:
public void extendJavaScript() throws Exception { ScriptableFunction playVideo = new ScriptableFunction() { public Object invoke(Object thiz, Object[] args) throws Exception { openMediaPlayer(args[0].toString()); return Boolean.FALSE; } }; _bf2.extendScriptEngine("bb.playVideo", playVideo); }
private void openMediaPlayer(final String url){ UiApplication.getUiApplication().invokeAndWait(new Runnable() { public void run() { PlayerScreen _playerScreen = new PlayerScreen(url + ";deviceside=true"); UiApplication.getUiApplication().pushScreen(_playerScreen); } }); }
Never mind. Have solved it. It turns out that the video I tried to access it from the web page is in incompatible format and so throw an error and freezing of the application.
-
Hi all!
I have a very annoying problem with in_data-> sequence_data and after effects CC 2015.
I'm storing the data in Sequence_data.
The problem is: I do not get the same data in UserChangedParams and rendering...
The same code works very well with After Effects CS5.5. First of all, I thought it's maybe due to the flattening new calls, but I have the same problem, even when I have everything first to apply my FX and change a parameter value (I get all other calls).
Someone having a similar problem? Any solution?
See you soon,.
François
try to set PF_OutFlag_FORCE_RERENDER for UserChangedParam. According
the documentation for the sdk CC2015 this should force the call flatten on the UI thread and
a unflatten on the rendering thread, the rendering thread synchronization sequence
data to the user interface.
-
Is there a simple way to call a parallel procedure?
I wan't something like this:
declare
int l_first;
int l_second;
int l_third;
Start
l_first: = start_new_thread ('call my_procedure (1)');
l_second: = start_new_thread ('call some_procedure (2)');
l_third: = start_new_thread ('call some_procedure (3)');
join_thread (l_first);
join_thread (l_second);
join_thread (l_third):
end;
The variant when you create task, create pieces, run the task and after all you drop the task is not convenient I want to just run my procedure in new thread, I don't need to chunk of other tables by rowid or something else.
It seems that you want to use threading and not necessarily parallel processing.
The difference? Well, parallel processing takes a load of unique work and that at the same time (hence the need for segmentation of the workload). Threads can be performed in parallel of the different workloads - for example in a a Flight Simulator thread can do the rendering, another sound, another model flight, another weather model, etc.
And this (and other) announces, is seems you want to put on and treatment not specifically parallel.
We can implement as background process threads (aka jobs). But unlike the typical Windows/Posix thread synchronization between threads and access for the threads data segment, are not really possible.
Here is an example of a class Thread base to be used in PL/SQL:
SQL> create or replace type TThread authid current_user as object( 2 thread_code varchar2(32767), 3 job_id integer, 4 5 constructor function TThread( plsqlCode varchar2, startImmediate boolean default true ) return self as result, 6 member procedure StartThread( self in out TThread ), 7 member function ThreadCompleted return boolean 8 ); 9 / Type created. SQL> SQL> create or replace type body TThread as 2 3 constructor function TThread( plsqlCode varchar2, startImmediate boolean default true ) return self as result is 4 begin 5 self.thread_code := plsqlCode; 6 if startImmediate then 7 self.StartThread(); 8 end if; 9 return; 10 end; 11 12 member procedure StartThread( self in out TThread ) is 13 pragma autonomous_transaction; 14 begin 15 DBMS_JOB.Submit( 16 job => self.job_id, 17 next_date => sysdate, 18 what => self.thread_code 19 ); 20 commit; 21 exception when OTHERS then 22 rollback; 23 raise; 24 end; 25 26 member function ThreadCompleted return boolean is 27 i integer; 28 begin 29 select 1 into i from user_jobs where job = self.job_id; 30 return( false ); 31 exception when NO_DATA_FOUND then 32 return( true ); 33 end; 34 35 end; 36 / Type body created. SQL> SQL> declare 2 thread1 TThread; 3 begin 4 thread1 := new TThread( 'dbms_lock.sleep(10);' ); 5 dbms_output.put_line( to_char(sysdate,'hh24:mi:ss')||': thread running as job '||thread1.job_id ); 6 7 while not thread1.ThreadCompleted() loop 8 dbms_output.put_line( to_char(sysdate,'hh24:mi:ss')||': thread busy...' ); 9 dbms_lock.sleep(1); 10 end loop; 11 12 dbms_output.put_line( to_char(sysdate,'hh24:mi:ss')||': thread completed' ); 13 14 end; 15 / 07:52:50: thread running as job 767 07:52:50: thread busy... 07:52:51: thread busy... 07:52:52: thread busy... 07:52:53: thread busy... 07:52:54: thread busy... 07:52:55: thread busy... 07:52:56: thread busy... 07:52:57: thread busy... 07:52:58: thread busy... 07:52:59: thread busy... 07:53:00: thread busy... 07:53:01: thread busy... 07:53:02: thread busy... 07:53:03: thread completed PL/SQL procedure successfully completed. SQL>
Note that no validation is to ensure that the StartThread() method is not called repeatedly - this class is a simple test model that has yet to evolve before production use.
-
JavaFX 2.2 equivalent to repaint() swing?
Hello
I am new to this forum and javafx.
I'm very experienced in java, swing (and I used for the design of the JAVA virtual machine in a previous life for embedded mobile systems.including).
Are there restrictions on when the JFX application is authorized to acquire a graphics context and to drawing on a canvas? (swing provides repaint() to plan graphic activity by the app). Must be present always could start via a UI control event handler? In general, I wantr to draw on a canvas in response to several different triggers, including the control of based UI.
I tried a few artisanal animation on the JFX App thread, with interesting results.
If I use an AnimationTimer and tap into its recall, all right.
Before that, I discovered, I tried intiially by own hack, with a small loop involving sleep() for 50ms and then by drawing. This loop is triggered in response to a button event handler. So, we are all still in the context of the App thread. It did not work... the canvas layout screwed to the top, and no chart didn't seem in it.
So, please can you answer 2 questions.
1 / is there honor restrictions, and if so, where can I find these documented? I have spent a lot of time to research the oracle site, with no luck. For the real product, I develop, I need especially to know if there are problems with another thread by sending requests to the application thread, work that leads finally to the graphic.
2 / the above behaviour may involve livelocks occur (somehow the wire of the ability to conduct its business of hunger), or behind the scenes ongoing thread synchronization that I managed to disrupt. I saw very high level mention to Don for the JFX architecture. Is there an explanation please?
Thank you very much
Jerry Kramskoy
It is not too much that you need to know.
The tutorial has a short section on threads in the section Architecture of JavaFX. API for node documentation describe the restrictions on what needs to be done on the Thread of the JavaFX Application:
Node objects can be built and modified on any thread as long as they are not yet attached to a
Scene
. An application must determine nodes on a scene and change nodes that are already attached to a scene on the Thread of the JavaFX Application.Your canvas is a subclass of node, so cannot be changed on the Thread of the JavaFX Application. There is a Platform.runLater (...) method that can be invoked from threads to ask a Runnable run on the Thread of the JavaFX Application user-defined (this is similar to SwingUtilities.invokeLater (...)).
The other important rule, of course, is that you must not block the Thread of the JavaFX Application. It looks like the loop that you describe might have done this ("we are all still in the context of the App thread").
The javafx.concurrent package has a set of useful classes and interfaces for code execution in a background thread. For example, the Task class is an implementation of FutureTask providing also several callback methods that are called on the JavaFX Application Thread. One way to realize an animation that has updated the user interface at a specified interval would be to create a task with a set of a onSucceeded a Manager to update your canvas and then move this task to the scheduleAtFixedRate (...) method of a ScheduledExecutorService. See also the tutorial of JavaFX to competitive access .
One last thing to note is that there are a javafx.animation package, which essentially has APIs to change the properties over time and to update the values of these properties on the JavaFX Application thread. You can make animation, for example, to create a timeline that modifies its translateX and translateY of a node properties. According to the animation that you are implemented, it's perhaps easier to roll your own loop animation and editing a Web. See the JavaDocs and the tutorial.
In your example, things work very well using the AnimationTimer, that its handle (...) method is called on the Thread of the JavaFX Application. I'm not quite clear what happened when you tried to use your own loop, but either the loop was running on the Thread of the JavaFX Application, block it and it prevents to be part of its normal work, or you start a new thread and try to update the drawing area, breaking the rules on the threads and the scene graph.
Note that if this can help. Maybe after a short example illustrating what you try to do it if not.
-
Question about synchronized start
Suppose I have the following code:
See (*): If manually making sure this veryPrivateMethod are called in a context where we are already synchronized state, what I still synchronize more precisely on the State in the method (reentrant synchronization) or is it better performance and still safely synchronized if I omit the statement synchronized in veryPrivateMethod()?/** * method performs actions that require synchronization on state but * the programmer ensures manually that it is only called in a context * where we are already synchronized on state */ private void veryPrivateMethod() { //synchronized(state) { (*) required? if (state == 999) { // perform actions that require synchronization on state } //} } public void anotherMethod() { synchronized(state) { if (state == 42) state = 43; veryPrivateMethod(); } }
Thank you!cardan2 wrote:
932196 wrote:
I synchronize it whenever I change / change compares it. Is this a bad ideaIt's a maybe. This isn't a bad idea, as long as you account that has no special meaning and will provide no special protection. You can synchronize on any object that you want, as long as other threads synchronize on the same exact object when you want to run the same volatile code sections.
the comment in the example is:
// perform actions that require synchronization on state
This leads me to believe that the code is not properly synchronized at this time. as I said, replacing the reference to the object you synchronize on almost always leads to the broken code.
-
Support for synchronization of threads?
Hello
Here is the code for sending works fine mms.it for a single connection.
When I am trying to send multiple single mms is sent.
public void sendMMS(final String url) { Thread thread=new Thread() { public void run() { try { synchronized (url) { messageConnection=(MessageConnection)Connector.open(url); } } catch (Exception e) { } if(messageConnection==null) { Dialog.alert("MessageConnection Null"); } int counter=0; try { MessagePart messagePart; multipartMessage=(MultipartMessage)messageConnection.newMessage(MessageConnection.MULTIPART_MESSAGE); String time=String.valueOf(System.currentTimeMillis()); multipartMessage.setHeader("X-Mms-Delivery-Time",time); multipartMessage.setHeader("X-Mms-Priority","high"); multipartMessage.setSubject("Greeting Card"); String encoding="UTF-8"; byte[] textMsgBytes = textObj.textArea.getText().getBytes(encoding); messagePart=new MessagePart(textMsgBytes,0,textMsgBytes.length,"text/plain","id"+counter,null,encoding); multipartMessage.addMessagePart(messagePart); counter++; String mimeType="image/jpg"; Bitmap image=textObj.imageObj.originalImage[i]; PNGEncodedImage encodedImage=PNGEncodedImage.encode(image); byte[] contents=encodedImage.getData(); messagePart=new MessagePart(contents,0,contents.length,mimeType,"id"+counter,null,null); multipartMessage.addMessagePart(messagePart); counter++; if(multipartMessage!=null) { messageConnection.send(multipartMessage); } }catch (Exception e) { System.out.println("Exception From sendMMS"+e); } finally { try { if(messageConnection!=null) { messageConnection.close(); } } catch (Exception e) { System.out.println("Exception From finally"+e); } } } }; thread.start(); }
I'm the forloop that appellant
for(int i=0;i
If someone can tell me how I should do this code for several mms work.
thankx.
My problem has been resolved.
I have simply apply a method synchronized to the thread object.
thankx.
-
Update of the screen, threading and synchronization
I have a game I developed that uses multiple threads to process. The game does not focus on the user by itself and seems to be accelerating when there are more items on the screen and slows down when there is less. I have four threads in use. Three of them are used to update the main (UI) thread and run continuously; two update a class watch stop custom, and the third simply disabled the screen to force a refresh. All three of the threads use locks objects synchronized; That's why I think it slows down when nothing is on the screen, because they constantly block. I do not have variables that are constantly updated by the thread and read survival gear each iteration; which I was I use locks. I use the IDE 4.7 and the simulator of the storm. Profiling code over a minute 3 period shows that almost 60% of the execution time is during one of the locked rows (block I'm of course). I was wondering what I should use locks because only the UI thread updates one of the three? If so, is there a better way. Code can be provided if necessary.
BUDOKAI-is that they have a book of text on the famine of lock?
http://Java.Sun.com/docs/books/tutorial/essential/concurrency/starvelive.html
[ed, I would also like to make out this seems to be a tight loop so that it also uses time spinning CPU]
during the liberation that briefly up to 2 locks]
While (true) {}
synchronized (runLock) {}
If {(race)
synchronized (pauseLock) {} -
updated to ios 10.0.1 and now when I run the conectivity test my pc can't find my iphone so I'm not able to back up or synchronize it with my pc. everytime I connect my phone to my PC the pc revealed the companion phone which is no use to me as I want to get back to the top of my IPhone and syncing old content like movies without having to use my wireless
You have restarted your computer?
If iTunes does not recognize your iPhone, iPad or iPod - https://support.apple.com/HT204095
Device are not not immediately after the upgrade - https://discussions.apple.com/thread/6573744 - try to restart
Make sure you use the original or a spare cord Apple. Some third-party cables transfer that power and no data signal.apple.com/message/28002758#28002758
https://discussions.apple.com/message/29154537#29154537 - removed then reinstalled iTunes application
July 2016 Lawrence_Finch post - https://discussions.apple.com/message/30402529#message30402529 - connection dirty?
-
Single Message thread backup icloud?
Hello
I was wondering if there is a way to select a single message to iCloud save thread. The reason: my brother has a 1 year old child and sends a thread of family group about 10 pictures per day, sometimes with a video. This sometimes others form picture answers. My iPhone 16GB 5 fills up quickly. The photos are cute, etc and I don't necessarily want their past (where the issue of backup), I just want to be able to take a picture of mine when I want without memory formidable opinion.
To clarify, I don't want to back up all my posts on iCloud, and I don't want to limit the allocation of memory for messages (it would quickly reach quota). I want to be able to synchronize the thread of interest, then delete it. Is this possible? I have an extra space on iCloud, which would easily handle this.
This is not possible, I'm afraid. Indeed, if you delete something in your phone it don't stay in your back forever, the rear 3 last ups are stored in the cloud.
-
Hello
I want to switch to Chrome, Firefox, but I have a problem with the synchronization feature.
It always displays the following error message: ' Sync has encountered an error during synchronization: unknown error. " Synchronize automatically retrying this action. »I already tried this work around, but it did not work: remove my account from syncing, completely reset my Firefox profile, import my favorites of Chrome (using an HTML file), set up a new sync account (using the same e-mail address then that previously deleted).
But I still get the error message.I saw in other threads that could be a problem with the story, so I also tried to delete, but it doesn't work anymore.
Here is my last sync-log file: https://pastebin.mozilla.org/8219943
Thanks for your help.
I finally found a solution to this problem of synchronization:
I downloaded the add-on 'Housekeeping' and run the integrity check routine, and it seems to have solved the problem.
https://addons.Mozilla.org/en-us/Firefox/addon/places-maintenance/
-
Help! I tried to sync, and I thought that clicking on 'sync' would bring a dialog box or menu of some kind, but simply went ahead and synchronize the data of the wrong computer. I lost years of bookmarks for the work. How can I cancel the sync and find all my favorites? I saw another thread where a user had been able to do this by disconnecting the computer from synchronization. I tried, but the Favorites are still missing.
Firefox automatically records the bookmark backups. Restore a backup from before when you configure synchronization.
https://support.Mozilla.org/en-us/KB/restore-bookmarks-from-backup-or-move-them#w_restoring-from-backups -
Synchronization from the phone to the computer when another computer unavailable.
Initially, I set up firefox sync on a computer and synchronize my information to an Android phone. This computer has stopped working, but the data are of course always on the phone and on the servers. I want to sync it to my new computer, but can't find a way to pair the device or get the key to my phone recovery. Any ideas?
Found the answer hidden in one of these threads.
Here is the step by step.
Go to the device settings (not in firefox) page
Under accounts & sync, click the sync firefox note
Then, you can click pair a device and enter the code in the new computer.
Thanks for the help!We have a few questions about it recently, but the discussions have not clear solutions, step by step. Perhaps they will be useful anyway?
Maybe you are looking for
-
Satellite Pro L550 - Microphone does not work with Skype
Hello I recently installed Skype on my laptop and I went through all the tests to make sure that I can hear and can be heard. My two speakers and microphone are working fine. However when I go to use Skype to chat with people they can not hear me but
-
Salvation; Having a camera SX50 HS and follow the directions in the manual I cannot access the AWB, the white balance, as the list of icons including the icon of the AWB appear not as described in the manual. What Miss me? Charlie
-
How to make test of Windows 7 to Windows Xp home edition.
I have a 32-bit desktop computer that was running Windows Xp Home Edition, but my friend gave me a Windows 7 test drive and I installed it, but I don't like windows 7 and I can't get my computer back to Windows Xp. I want to know if someone or Micros
-
It's recommended to upgrade Windows Vista to Windows 7?
I have a lapton with Windows Vista and would like to know if it is recommended to upgrade to Windows 7. I am concerned by stop the updates and Microsoft support. If it is not essential I stay pretty with Vista. Thanks a lot for your help
-
My jpge file convert. How .ocx and .htt to change.
My jpge file convert .ocx and .htt. . How to change.