Is this code ok?
===

This code is called in a BackgroundWorker's DoWork event handler, I am creating a WCF client and using it in the try block, if there is an exception I want to abort and retry again for 5 times before returning from the handler. 



        private void WorkerDoWork(object sender, DoWorkEventArgs e)
        {            
            var mmc = new ServiceClient();

            try
            {
                e.Result = mmc.SubmitData(measure);
            }
            catch (Exception)
            {
                mmc.Abort();

                mmc = new ServiceClientClient();

                var counter = 0;

                while ((bool)e.Result == false && counter++ < 5)
                {
                    try
                    {
                        e.Result = mmc.SubmitData(measure);
                    }
                    catch (Exception)
                    {
                        mmc.Abort();
                        mmc = new ServiceClient();
                    }
                }
            }
            finally
            {
                if (mmc.State == CommunicationState.Faulted)
                {
                    mmc.Abort();
                }
                else
                {
                    mmc.Close();
                }
            }
         }


I am not realy happy with the code, feels like something is fishy with it! Specially the nested try/catch.

Is this code ok? or should I refactor it? 
