"DEADLOCK" when showing dialog from RMI-callback.

Hi!
Today is the 10th day (full time) that I've been searching for a solution in Java Forums and Internet, but I couldn't find anything that helps me. Help is extremely appreciated, otherwise I'll go crazy! :-)
The problem is that RMI-callback thread "somehow blocks" the Event Dispatch Thread.
I want to do following:
1) I push the button in the client (btDoSomething)
(MOUSE_RELEASED,(39,14),button=1,modifiers=Button1,clickCount=1 is automatically pushed onto EventQueue)
2) btDoSomethingActionPerformed is invoked
3) inside of it I make a call to RMI-server (server.doSomething())
4) from this server method I invoke RMI-callback back to the client (client.askUser())
5) in the callback I want to display a question to the user (JOptionPane.showConfirmDialog)
6) user should answers the question
7) callback returns to server
8) client call to the server returns
9) btDoSomethingActionPerformed returns and everybody is happy :-)
This works normally in normal Client, that means, while a button is pushed, you can show Dialogs, but with RMI callback I get problems.
I just made a small client-server sample to simulate real project. What I want to achieve is that client invokes server method, server method does something, but if server method doesn't have enough information to make the decision it needs to do call back to the client and wait for input, so the user gets an JOptionPane.
Here is my callback method:
    /** this is the remote callback method, which is invoked from the sevrer */
    public synchronized String askUser() throws java.rmi.RemoteException {
        System.out.println("askUser() thread group: " + Thread.currentThread().getThreadGroup());
        System.out.println("callback started...");
        try {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    System.out.println("My event started...");
                    JOptionPane.showConfirmDialog(parentFrame, "Are you OK?", "Question", JOptionPane.YES_NO_OPTION);
                    System.out.println("My event finished.");
        }catch (Exception e) {
            e.printStackTrace();
        try {
            Thread.currentThread().sleep(10000);
        }catch (Exception e) {
            e.printStackTrace();
        System.out.println("callback finished.");
        return "Yo!"; // just return anything
    }Here in this sample I let the callback thread sleep for 10 seconds, but in real project I let it sleep infinitely and I want to wake it up after the user has answered JOptionPane. But I have the DEADLOCK, because event queue is waiting for callback to finish and doesn't schedule the "showing dialog" event which contains the command for waking up the callback thread.
I looked very precisely when the event queue starts again to process events: it is precisely then when btDoSomethingActionPerformed is finished.
When I'm not accessing GUI inside of the callback, this callback mechanism works perfectly, but as soon as I want to show the dialog from inside of the RMI-callback method, the "AWT Event Dispatch Queue" is somehow frozen until RMI-callback thread is finished (and in turn btDoSomethingActionPerformed terminates) . I cannot explain this weird behaviour!!!
If I don't use SwingUtilities.invokeLater (I know this shoudn't be done outside of Event Dispatch Thread), but access the GUI directy, my JOptionPane is shown, but is not painted (it is blank gray) until callback thread returns.
Why showing (or painting) of dialog is not done until btDoSomethingActionPerformed is finished?
I also tried to spawn a new Thread inside of main RMI-callback thread, but nothing changed.
I also tried the workaround from some older posting to use myInvokeLater:
    private final static ThreadGroup _applicationThreadGroup = Thread.currentThread().getThreadGroup();
    public void myInvokeLater(final Runnable code) {
        (new Thread(_applicationThreadGroup, new Runnable() {
            public void run() { SwingUtilities.invokeLater(code); }
        ).start();
    }but this didn't help either.
Then I tried to spawn a new Thread directly from the Client's constructor, so that I'm sure that it belongs to the main appplication thread group. I even started that thread there in the constructor and made it wait for the callback. When callback came in, it would wake up that sleeping thread which should then show the dialog. But this did't help either.
Now I think that it is IMPOSSIBLE to solve this problem this way.
Spawning a new Process could work I think, but I'm not really sure if I want do to that.
I know I could make a solution where server method is invoked and if some information is missing I can raise custom exception, provide the input on client side and call the same server mathod again with this additional data, but for that I need to change server RMI interfaces, etc... to fit in this concept. I thought callback would much easier, but after almost 10 days of trying the callback...I almost regreted it :-(
Is anyone able to help?
Thank you very much!
Please scroll down for the complete sample (with build and run batch files), in case someone wants to try it. Or for the time being for your convenience you can download the whole sample from
http://www.onlineloop.com/~tornado/download/rmi_callback_blocks_gui.zip
######### BEGIN CODE ####################################
package callbackdialog;
public interface ICallback extends java.rmi.Remote {
    public String askUser() throws java.rmi.RemoteException;
package callbackdialog;
public interface IServer extends java.rmi.Remote {
    public void doSomething() throws java.rmi.RemoteException;
package callbackdialog;
import java.rmi.Naming;
public class Server {
    public Server() {
        try {
            IServer s = new ServerImpl();
            Naming.rebind("rmi://localhost:1099/ServerService", s);
        } catch (Exception e) {
            System.out.println("Trouble: " + e);
    public static void main(String args[]) {
        new Server();
package callbackdialog;
import java.rmi.Naming;
public class ServerImpl extends java.rmi.server.UnicastRemoteObject implements IServer {
    // Implementations must have an explicit constructor
    // in order to declare the RemoteException exception
    public ServerImpl() throws java.rmi.RemoteException {
        super();
    public void doSomething() throws java.rmi.RemoteException {
        System.out.println("doSomething started...");
        try {
            // ask the client for the "missing" value via RMI callback
            ICallback client = (ICallback)Naming.lookup("rmi://localhost/ICallback");
            String clientValue = client.askUser();
            System.out.println("Got value from callback: " + clientValue);
        }catch (Exception e) {
            e.printStackTrace();
        System.out.println("doSomething finished.");
package callbackdialog;
import java.rmi.server.RemoteStub;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.Naming;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
public class Client extends javax.swing.JFrame implements ICallback {
    private final JFrame parentFrame = this;
    private Registry mRegistry = null;
    private RemoteStub remoteStub = null;
    private IServer server = null;
    private final static ThreadGroup _applicationThreadGroup = Thread.currentThread().getThreadGroup();
    /** Creates new form Client */
    public Client() {
        initComponents();
        System.out.println("Client constructor thread group: " + Thread.currentThread().getThreadGroup());
        try {
            server = (IServer)Naming.lookup("rmi://localhost/ServerService");
            // register client to the registry, so the server can invoke callback on it
            mRegistry = LocateRegistry.getRegistry("localhost", 1099);
            remoteStub = (RemoteStub)UnicastRemoteObject.exportObject((ICallback)this);
            Registry mRegistry = LocateRegistry.getRegistry("localhost", 1099);
            mRegistry.bind("ICallback", remoteStub);
        }catch (java.rmi.AlreadyBoundException e) {
            try {
                mRegistry.unbind("ICallback");
                mRegistry.bind("ICallback", remoteStub);
            }catch (Exception ex) {
                // ignore it
        }catch (Exception e) {
            e.printStackTrace();
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;
        secondTestPanel = new javax.swing.JPanel();
        btDoSomething = new javax.swing.JButton();
        getContentPane().setLayout(new java.awt.GridBagLayout());
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("RMI-Callback-GUI-problem sample");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
        secondTestPanel.setLayout(new java.awt.GridBagLayout());
        btDoSomething.setText("show dialog");
        btDoSomething.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDoSomethingActionPerformed(evt);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
        secondTestPanel.add(btDoSomething, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        getContentPane().add(secondTestPanel, gridBagConstraints);
        pack();
    private void btDoSomethingActionPerformed(java.awt.event.ActionEvent evt) {                                             
        System.out.println(java.awt.EventQueue.getCurrentEvent().paramString());
        try {
            server.doSomething(); // invoke server RMI method, which will do the client RMI-Callback
                                  // in order to show the dialog
        }catch (Exception e) {
            e.printStackTrace();
    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                  
        try {
            mRegistry.unbind("ICallback");
        }catch (Exception e) {
            e.printStackTrace();
        setVisible(false);
        dispose();
        System.exit(0);
    /** this is the remote callback method, which is invoked from the sevrer */
    public synchronized String askUser() throws java.rmi.RemoteException {
        System.out.println("askUser() thread group: " + Thread.currentThread().getThreadGroup());
        System.out.println("callback started...");
        try {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    System.out.println("My event started...");
                    JOptionPane.showConfirmDialog(parentFrame, "Are you OK?", "Question", JOptionPane.YES_NO_OPTION);
                    System.out.println("My event finished.");
        }catch (Exception e) {
            e.printStackTrace();
        try {
            Thread.currentThread().sleep(10000);
        }catch (Exception e) {
            e.printStackTrace();
        System.out.println("callback finished.");
        return "Yo!"; // just return anything
     * @param args the command line arguments
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                Client client = new Client();
                client.setSize(500,300);
                client.setVisible(true);
    // Variables declaration - do not modify
    private javax.swing.JButton btDoSomething;
    private javax.swing.JPanel secondTestPanel;
    // End of variables declaration
1_build.bat
javac -cp . -d . *.java
rmic callbackdialog.ServerImpl
rmic callbackdialog.Client
pause
2_RunRmiRegistry.bat
rmiregistry
pause
3_RunServer.bat
rem java -classpath .\ Server
java callbackdialog.Server
pause
4_RunClient.bat
java callbackdialog.Client
pause
######### END CODE ####################################

I can understand that only partially, because SwingUtilities.invokeLater puts(redirects) my runnable object directly into AWT thread. The only conclusion I can draw from all things that I have tried until now , is that SwingUtilities.invokeLater(<showing the dialog>) invoked from a RMI thread somehow have lower "priority" than events coming directly from the AWT-thread and therefore it is held back until normal awt event completes (in this case BUTTON_RELEASED).
But what I don't understand is the fact that the dialog is not shown even If I create and start a new thread from the client's constructor. This thread has nothing to do with RMI as it is in the main thread group:
    private BlockingObject dialogBlocker = new BlockingObject();
    private BlockingObject blocker = new BlockingObject();
    public Client() {
        initComponents();
        (new Thread() {
            public void run() {
                try {
                    dialogBlocker.sleep(0);
                    System.out.println("My event started...");
                    JOptionPane.showConfirmDialog(parentFrame, "Are you OK?", "Question", JOptionPane.YES_NO_OPTION);
                    blocker.wake();
                    System.out.println("My event finished.");
                }catch (Exception e) {
                    e.printStackTrace();
        }).start();
        ...Callback is then only used to wake up this thread which should display the dialog:
    public Object askUser() throws java.rmi.RemoteException {
        System.out.println("callback started...");
        dialogBlocker.wake();
        blocker.sleep(0);
        System.out.println("callback finished.");
        return userChoice; // return anything I don't care for now
class BlockingObject {
    public void sleep(long timeout) {
        synchronized(this){
            try {
                wait(timeout);
            }catch (InterruptedException e) {}
    public void wake() {
        synchronized(this){
            notifyAll();
    }In this case the dialog is shown, but it is NOT painted, so I have deadlock again. Why it is not painted?!?
Haven't I uncouple it from RMI-Thread?
But perhaps I'm looking at the wrong side of the whole thing.
If I invoke server.doSomething (as ejp proposed) in a separate thread, then everything is fine (except that I cannot use this solution in my project :-( ).
It seems that the whole problem is NOT AT ALL related to callback itself, but rather to the fact that if client invokes remote call, even dialogs can't be shown until the rmi call returns to the client.
Thank you, Drindilica

Similar Messages

  • Missing sound when showing videos from iPad to Apple TV.

    When showing YouTube videos from my ipad on apple tv, there is no sound from tv or iPad. What do I do?

    Do other types of videos (e.g, streamed from your own Videos library on the iPad) work?

  • Bridge Freezes when Show Items From Sub Folders

    Hi all. I am trying to create a portfolio of past works. Using Adobe Bridge and Show Items From Sub Folders makes it easy to go through thousands of files. One major problem though; Bridge is not stable. When I try to view a folder with thousands of files Bridge will freeze and I have to force quite.
    I am running a Mac Pro with Adobe Design CS4 Premium installed. I have 16gb of Ram and have played around with Bridge's preferences and deleted Bridges preference files. I also tried all the options list on Adobe's check list.
    Any help would be greatly appreciated.
    Regards
    Stephen Thompson

    Bridge is not stable. When I try to view a folder with thousands of files Bridge will freeze and I have to force quite.
    As a matter of fact, bridge CS4 is the most stable version of bridge, and although still not perfect yo should be able to view the folder in flat view.
    It only takes a lot of time to cache if you have not done before. If cache does not start you first should try to purge cache for folder using the tools menu.
    If Bridge keeps freezing first thing to try is to restart holding down option key and choose reset preferences. Set prefs again to your own wishes and try again.
    You can also try to first cache the folder using the tools menu. In the folderpanel select the main folder you want to view its contents and go to the tools menu / cache and this time select build and export cache.
    Depending on the amount and size of files it takes some time. Then try again.
    It is able to work, as it does on my system. I have also a main folder that contains around 5000 files organized in stacks and works as it should

  • Dynamically add a fade in/out transition to a caption when "showing" it from an Action?

    I have a conditional action set up where if things are not correct (text input in two entry fields), I show feedback in a caption box. I figured out how to set the caption box to be initially invisible (via unchecking the Visible checkbox for the caption's properties), and how to show it when this condition occurs. But I 'd like it to also do the traditionall transition of fade in & out when I show it fromt he action. My Advanced Action is executed when the user clicks an "OK" button.
    Any thoughts or advice?

    Yes. Plenty of media on either end. The good news is that trashing the permissions and repairing worked.
    BUT I have a question while these great minds are assembled...When repairing disk permissions the Utility says that to repair permissions on startup disk, start using my OSX install disk, which in my case is the the CD that came with my powerbook. When I tried to startup using that CD, holding down the "c" key on startup, it went into install mode. I told it I did not want to install, set the startup disk as the CD again, and kept looping around in this manner. I am probably missing a step...First question:
    1) Is it in fact necessary to start up from this CD in order to properly repair permissions?
    2) If yes, how do I get away from the install mode and to the disk utility, once the installer pops up.
    Thanks in advance. You guys are lifesavers once again.

  • "No Items" is displayed when "Show Items from Subfolders" is selected

    When I select the "view subfolders" menu item in a folder with subfolders and items, Bridge indicates that it is indexing.  Then it displays "No Items". If I go to each subfolder individually, the images are displayed.  This only happends in some folders. I purged my cache, perhaps this is the problem but it didn't help. I found a similar discussion named "View Subfolders" from 2009 with a "Helpfull answer" linked to http://kb2.adobe.com/cps/332/332992.html but it is now not available. My operation system is Apple OS 10.8.1.

    UziYachin wrote:
    I tried to index the entire sub-tree with no help. I noticed that when I restart bridge I get a message that bridge is unabled to read the cache. After purging the central cache I still get the above message after restart.
    Well, in that case, it sounds like this is causing the problem. If you can't read the cache, then you probably can't read an index either.
    Without knowing anything about your computer system, I'd suggest that you need to check for general account permission setup problems before looking at Bridge specifically.

  • [CS5/JS/ScriptUI]: All contents is removed from tabbedpanel when showing alert box or other Window.

    When I open a new window (an alert box, another scriptUI window, or an old style InDesign dialog) from my non modal ScriptUI interface, the contents inside all tabs on the tabbedpanel of the window disappear completely, and the last tab is selected.
    Other controls, outside the tabbed panel (but in the same window) are left untouched.
    I suspect the error has to do with the tab control. I have been able to recreate the error in an extremely simple window, and I attach the code below.
    #targetengine 'test'
    var Window1 = new Window('palette','Test',undefined);
    buildWindow();
    Window1.show();
    function buildWindow(){
        Window1.tabMain = Window1.add('tabbedpanel',undefined,undefined);
        Window1.tabMain.minimumSize= [450,170];
        Window1.tabMain.Tab1 = Window1.tabMain.add('tab',undefined,"Tab 1");
        Window1.tabMain.Tab1.Static1 = Window1.tabMain.Tab1.add('staticText',undefined,"Text on tab 1");
        Window1.tabMain.Tab2 = Window1.tabMain.add('tab',undefined,"Tab 2");
        Window1.tabMain.Tab2.Static1 = Window1.tabMain.Tab2.add('staticText',undefined,"Text on tab 2");
        Window1.tabMain.Tab1.btnTest = Window1.tabMain.Tab1.add('button',undefined,"Test");
        Window1.tabMain.Tab1.btnTest.onClick = function(){alert('btnTest_onClick')};
        // Trying with calls to layout . (This button is not affected by the alert showing - only controls inside the tabbed panel)
        Window1.btnLayout = Window1.add('button', undefined, 'Window1.layout.layout()');
        Window1.btnLayout.onClick = function(){Window1.layout.layout()};
    The interface works well in CS4, and also if I make the window modal (by creating it as a "dialog").
    In CS5, the result is this:
    Calling layout.layout() or layout.resize() doesn't do anything.
    If someone else would like to try my code, do you get the same effect?
    Is the behaviour known?
    Is there a way to prevent this from happening for non modal ScriptUI windows?
    Best regards,
    Andreas Jansson

    Thanks Marijan, for testing and letting me know!
    I filed a bug report now. We would perhaps have to "force" a couple of our clients to an upgrade from CS5 to CS5.5 in order to beat this bug and get it working, unless Adobe acknowledges it quickly, which I don't count on.
    No good news then... I took for granted that the interface would work in CS5 if I made it in CS4.
    (The thing that I was mostly concerned about was a tree view which I tested in Mac/PC and on CS4/CS5. Not the "tabbed panel"...)
    Andreas
    Adding this answer I got from Adobe:
    Monday, November 21, 2011 2:21:03 AM PST
    Hello Andreas,
    I was able to replicate this problem with InDesign CS5. This bug seems
    to have already been fixed as a side effect of some code change within
    InDesign CS5.5.
    I have logged this under bug # 3050997. This will now be worked upon by
    InDesign engineering and should be fixed soon.
    I'll keep you informed about updates on this bug.
    Message was edited by: Andreas Jansson. Response from Adobe added.

  • Hello I send imessages to a phone number I receive delivery notice but sms does not show on receiving phone. Otherwise when receive imessage from other phone I reply and receiver sees SMS !!! Any explanation ?

    Hello I send imessages to a phone number I receive delivery notice but sms does not show on receiving phone. Otherwise when receive imessage from other phone I reply and receiver sees SMS !!! Any explanation ?

    To my knowledge, I've only seen this for imessage only and not SMS.
    The other users would need to have send read receipts enabled on their phone.

  • When l plug my ipad into my computer it just shows files from the ipad. And doesn't open itunes.

    When l plug my ipad into my computer it just shows files from the ipad. And doesn't open itunes...Help???

    Check for Update (tap to enlarge image)

  • I have deleted my photos but have icloud. when i log into icloud it doesnt give me an option to view these photos at all. my photo stream is only showing photos from another iphone in the house. i am unsure if i do a restore from back up if this will work

    I have deleted my photos but have icloud. when i log into icloud it doesnt give me an option to view these photos at all. my photo stream is only showing photos from another iphone in the house. i am unsure if i do a restore from back up if this will work. i really dont want to lose these photos but i am very unsure of what to do to resolve. can anyone please help?
    thank you

    If you had Photo Stream enabled with your iCloud account settings on the iPhone, photos in the Camera Roll should have been transferred to your photo steam automatically when the iPhone was connected to an available wi-fi network.
    Your photo stream is not available when logging in with your iCloud account with a browser on a computer.
    Why were the photos in the Camera Roll deleted?
    Photos/videos in the camera roll are included with your iPhones backup. If your iPhone's backup has not been updated since the photos were deleted from the camera roll, you can try restoring your iPhone from the backup.

  • How can I show album art in the mini player when playing songs from a plugged in iPhone?

    How can I show album art in the mini player when playing songs from a plugged in iPhone?
    When I play from my phone and switch to the mini player it's always showing the music notes in the thumbnaill. It'd be nice if it could get album art off of the phone.
    I'm on iTunes version 11.0.4.4

    He @mracole,
    it is very nice that you post a solution to complete the library with artwork for album's that do not have an artwork. Your solution perfectly addresses the problem for assigning artwork, BUT this thread is about CHANGING artwork for albums already uploaded into iTunes Match. Just try to replace for example a blue artwork cover for an album with a red one. If you made it in a simple way (without deleting the album from iTunes Match and local changes on the files with an external ID3-Application or 2 or more iTunes libraries on different Mac's) this is the right place to give a solution. I really tried for hours to change the artwork to make them visible in landscape cover flow mode on my iPhone5. In rare cases I made it, but then the covers sometimes where restored to the old onces - exacly how it is mentioned by Starhawk
    As long as there is no simple way to change the cover of an iTunes Match stored album (you can change title, artist and so on without hitting "update iTunes Match" over all distributed Library on different devices - this date will be synchronized almost instantly) I considered the behaviour from iTunes as BUGGY! For me the local artwork cache (and if there is any iCloud artwork cache - I don't know) do not interfere with iCloud. Even when I delete the whole local cache (album artwork music - everything) I do not manage to change the artwork.
    Regards from Munich, Germany

  • How can I get a picture to go with my email signature when sending emails from my iPad? Only a square box shows up on my signature not the actual picture I iploaded in my settings.

    How can I get a picture to go with my email signature when sending emails from my iPad? Only a square box shows up on my signature not the actual picture I iploaded in my settings.

    Only Apple Account Security could help at this point. You can try calling Apple Support in Canada - you'll have to find one of the several ways, such as Skype, to call an 800 number from outside of the relevant country - and ask for Account Security and see if they can help. Or you can find a friend who speaks Chinese and ask them to help you talk to Apple Support in China. There are really no other options that I know of.
    Note, by the way, that these are user-to-user support forums. You aren't speaking with Apple when you post here.
    Regards.

  • When playing music from Ipod in my car, music suddenly stops and message appears to restore in iTunes.  After a few minutes, it starts to play again.  I hear a click and the apple logo shows on the screen.  Any ideas??

    When playing music from Ipod in my car, music suddenly stops and message appears to restore in iTunes.  After a few minutes, it starts to play again.  I hear a click and the apple logo shows on the screen.  Any ideas??

    You may need to do a Restore in iTunes.
    Clicking sounds from an iPod that has a hard drive is probably not a good thing.  It is possible that your iPod's hard drive is becoming unreliable.

  • HT3965 How do I change the ID that shows on other people's phones when I call from my iPhone five

    How do I change ID that shows on other people's phones when I call from my iPhone5?

    my son had this problem.  I went to the apple store and they wiped out and restored the phone..  They said that was all they could do but that I should call our phone carrier and ask them.  I did.  They asked if in the top left side, next to battery power there was a icon of a half moon.  There was. They said to go in to settings and go to "Do not Disturb" and turn it off.  I did.....problem solved!!! Somehow "do not disturb" was turned on and that is what happens if it is!!
    I hope this helps.

  • Can I show as an alias when I text from my iTouch?

    Can I show as something other than my AppleID when I text from my iTouch?

    Maybe here:
    iCloud: About email aliases
    Also, go to Settings>Messages>Send and Receive At and add another email address and then delete/uncheck your Apple ID

  • When I download a previous tv show purchase from iCloud it disappears once download is complete. How do I view the show?

    When I Download a previous tv show purchase from iCloud, I can't see where to view it. Help please!

    You don't download or purchase tv shows from icloud.
    If it's a tv show you've downloaded in itunes, after downloading, you should see a "tv shows" entry in the itunes library in the upper left area.  If you don't see that entry, go to itunes menu >> preferences >> general, and make sure there's a check in the box to display it.

Maybe you are looking for

  • Upgraded to 10.5 and now doesn't wake up

    Hey guys, Recently I gave in and installed 10.5 from 10.3.9. I really didn't want to as it's been working perfectly since I brought it, the original battery and HD are still going strong but I recently I brought myself a new iPod Nano and it needed i

  • How do i get into my phone when i forgot my passcode?

    I need help with my new iphone 5. i changed my passcode so my kids cant use it. Now i have forgotten it and need help acessing my phone.

  • Sql loader control file question.

    I have a text file (t.txt) which contains a record types AAA and AAB to input fixed width data into a table (t) AAA_NO, AAA_TYPE, AAB_DESC. Control file (control_t) contents: load data infile '/path/t.txt' insert into table t when ((1:3) = 'AAA' ) AA

  • HT4623 will I lose my AT&T factory unlock if I update to ios 6?

    I recently had at&t factory unlock my Iphone 4. It is currently running ios 5.1.1 and I want to know if I update it to the new ios 6, will I lose the unlock? Or do i just stick with 5.1.1? Thanks for any response as this is my first time posting anyt

  • Importer dans Lightroom 4.4 des images Raw CR2 du Canon EOS 70D?

    Bonjour, comment puis je importer dans Lightroom 4.4 des images Raw CR2 prises avec mon Canon EOS 70D? Actuellement je n'obtiens qu'un message qui me dit "Aperçu non disponible pour ce fichier. Je croyais qu'Adobe avait mis à jour Lightroom depuis ao